填充空数组

3

我需要从零迭代到30,但我想使用forEach来完成此操作:

new Array(30).forEach(console.log.bind(console);

当然这行不通,因此我这样做:
new Array(30).join(',').split(',').forEach(console.log.bind(console));

有没有其他方法来填充空数组?


1
请使用for循环代替。 - Mike Grabowski
5个回答

4

实际上,有一种简单的方法可以创建一个[0..N)(不包括N)的范围:

var range0toN = Object.keys(Array.apply(0,Array(N)));

显然,如果您只想获取一个包含N个元素的正确数组,可以不使用Object.keys部分。

尽管如其他人所说,在这种特定情况下,最好使用for循环。


2
如果您希望所有项目具有相同的值,请执行以下操作。
var arrLength = 4
var arrVal = 0

var newArr = [...new Array(arrLength)].map(x => arrVal);
// result will be [0, 0, 0, 0]

0
如果您只是想进行迭代,那么可以像这样使用for循环。
for (var i = 0; i < 30; i += 1) {
    ...
    ...
}

实际上,如果你正在寻找一种创建数字范围的方法,那么你可以这样做

console.log(Array.apply(null, {length: 30}).map(Number.call, Number));

它将创建从0到29的数字。来源:在JavaScript中创建范围-奇怪的语法


哈哈 =)我知道普通的for/while循环,但是我更喜欢使用forEach——它提供了最好的代码封装(速度不重要)。 - 3y3
@3y3 你具体想做什么?输出应该是什么? - thefourtheye
@3y3,更新后的答案看起来还不错吧?这是一个很巧妙的技巧;-) - thefourtheye
根据@raina77ow的答案,我可以提出console.log(Array.apply(null, new Array(30)).map(Number.call, Number));。长度技巧也很有趣。谢谢。 - 3y3
@3y3 阅读链接中的问题可以更深入地了解它是如何工作的。我必须说,它真的值得一读 :-) - thefourtheye

0
你可以尝试使用for循环。new Array不是最佳实践。
    var index,      // we use that in the for loop
        counter,    // number of elements in array
        myArray;    // the array you want to fill

    counter = 30;
    myArray = [];

    for (index = 0; index < counter; index += 1) {

        myArray[index] = [];
        /* 
        // alternative:
        myArray.push([]);
        // one-liner
        for (index = 0; index < counter; index += 1) myArray.push([]);
        */
    }

-2

如果你坚持使用 foreach

var data = [1, 2, 3];
data.forEach(function(x) {
    console.log(x);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接