用值填充数组,但是当我用console.log()检查数组时,数组值显示为未定义

时间:2018-12-05 02:47:46

标签: javascript

var myArray = []; //Create an empty array

//Fills empty array with values

for (i = 0; i < myArray.length - 1; i++) {
  myArray[i] = i * i; //Each index is equal to the square of the index number 0=0, 1=1, 2=4, etc.
}

console.log(myArray.length);
console.log(myArray[0]);

console.log(myArray.length);在控制台中返回0

console.log(myArray[0]);在控制台中返回未定义

3 个答案:

答案 0 :(得分:1)

myArray.length返回数组myArray中的元素数。

当数组到达循环时,其中没有任何元素([])。因此,当您执行myArray.length时,您会得到一个数字0

因此,您的for循环将运行零次,因为0 < 0永远不会为真(并且要运行,您的中间条件需要评估为true),这意味着当您达到console.log时,不会有任何结果在您的数组中设置,因此myArray[0]将是未定义的。

因此,要生成值,您需要在for循环中使用大于零的数字。在下面的示例中,我创建了一个包含10元素的数组:

var myArray = []; //Create an empty array

//Fills empty array with values
for (i = 0; i < 10; i++) { // <--- Change to i < 10 here to run 10 times (for i ranging within [0, 10) (0 <= i < 10)
  myArray[i] = i * i; //Each index is equal to the square of the index number 0=0, 1=1, 2=4, etc.
}
console.log(myArray.length); // 10
console.log(myArray[0]); // 0
console.log(myArray[1]); // 1
console.log(myArray[2]); // 4

答案 1 :(得分:0)

open(my $in_fh, '<', $in_qfn) or die("Can't open \"$in_qfn\": $!\n"); open(my $err_fh, '>>', $err_qfn) or die("Can't append to \"$err_qfn\": $!\n"); while (my $qfn = <$in_fh>) { chomp($qfn); print($err_fh "$qfn\n"); } 在开始循环时为零。因此,它甚至都没有进入循环,因此该数组将保留在初始化时的状态。

答案 2 :(得分:0)

您可以简单地使用Array.from并以mapFn作为第二个参数来生成数字:

const generate = n => Array.from({length: n}, (x,i) => i*i)

console.log(generate(5))
console.log(generate(10))