Ruby's Louvre

The Crankiness of Belief achieves Great , not the Trick of Regulation.

javascript天然的迭代器

它源于群里的某一题目:

有一个数n=5,不用for循环,怎么返回[1,2,3,4,5]这样一个数组

群的“糖果男孩”给的答案:

function getArr(n) {
    var a = [],
        b = [],
        m = 0;
    a.length = n + 1;
    a.toString().replace(/,/g, function () {
        b.push(++m);
    });
    return b;
}
标签: javascript

posted on 2010-10-28 08:56 司徒正美 阅读(995) 评论(4) 编辑 收藏

评论

#1楼 2010-10-28 10:13 重生      

给我的JS版,比较类似:
function test(n){
var rs = [],sum = 0,p = /\w/g;
  //直接打印出来
new Array(n + 1).join('x').replace(p,function({document.write(++sum);});
}
我的PHP版,PHP V5呀:
function test($n){
$s = array_keys(str_split(str_repeat('x', $n + 1)));
return array_shift($s);
}
 回复 引用 查看   

#2楼 2010-10-28 19:57 Dreampuf      

少一个m.

function getArr(n) {
    var a = [],
        b = [];
    a.length = n + 1;
    a.toString().replace(/,/g, function (fa,fb,fc) {
        b.push(fb);
    });
    return b;
}
 回复 引用 查看   

#3楼 2010-10-29 16:08 Anonymous Coward      

function iter(n) {
  return ("" + Array(n + 1)).
    replace(/,/g, function(a, b) {return b}).
    split("");
}
 回复 引用 查看   

#4楼 2010-11-01 21:11 peswe      

哎,还是ruby简单啊!~

def func(n) p (1..n).to_a end
 回复 引用 查看