我是javascript的新手,我无法找到undefined
对象插入到我的数组中的位置:
function foo(arrA){
if(!arrA || arrA[0] === 0)
return undefined;
let arrB = [];
let prevEntry = 1;
for(let i=0; i < arrA.length; i++) {
if (2*prevEntry == arrA[i]) {
prevEntry *= 2;
arrB[i] = (Math.pow(arrA[i], 2)).toString();
}
}
return arrB;
}
foo([2,4,6,8,9,15,16,27]);
作为输出,我得到一个功率为2的数组,正如预期的那样,但它与undefined
个对象隔行扫描,我只是不明白为什么。
(7) ["4", "16", undefined × 1, "64", undefined × 2, "256"]
提前感谢您的帮助! : - )
答案 0 :(得分:1)
您可能想要推送:
for(let i=0; i <arrA.length; i++){
if (2*prevEntry == arrA[i]){
prevEntry *= 2;
arrB.push((Math.pow(arrA[i], 2)).toString());
}
}
答案 1 :(得分:0)
当您在特定索引处向元素添加元素时,每个未定义的先前索引都会使用未定义的值进行初始化。
例如,当你有
时var array = [];
array[3] = 1
控制台日志将提供输出
[undefined, undefined, undefined, 1]
因此,正如Jonas所写的那样,解决方案只是将元素推送到数组而不是将它们插入特定的索引。
答案 2 :(得分:0)
由于此行2*prevEntry == arrA[i]
,您的代码正在跳过arrA
中的一些索引,并且由于arrA
和arrB
的索引相同,{{1没有价值,即那里未定义。不是通过索引在arrB
中插入方格,而是使用arrB
,这只会插入平方数。
push()
&#13;