Javascript 空插槽如何显示在阵列中?
我对javascript非常陌生,我无法确定在哪一点将Javascript 空插槽如何显示在阵列中?,javascript,arrays,undefined,Javascript,Arrays,Undefined,我对javascript非常陌生,我无法确定在哪一点将未定义的对象插入我的数组: 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]) { prevEnt
未定义的对象插入我的数组:
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]);
提前感谢您的帮助!:-) 您可能需要推送:
for(let i=0; i <arrA.length; i++){
if (2*prevEntry == arrA[i]){
prevEntry *= 2;
arrB.push((Math.pow(arrA[i], 2)).toString());
}
}
for(设i=0;i当您在特定索引处向数组添加元素时,以前未定义的每个索引都将使用未定义的值初始化
例如,当你
var array = [];
array[3] = 1
控制台日志将提供一个输出
[undefined, undefined, undefined, 1]
因此,正如Jonas所写,解决方案是简单地将元素推送到数组中,而不是在特定的索引处插入它们。由于这一行2*prevEntry==arrA[i]
,您的代码跳过了arrA
中的一些索引,并且由于arrA
和arrB
的索引相同,arrB
没有值,即未定义。使用push()
代替按索引在arrB
中插入平方,这将只插入平方数
函数foo(arrA){
如果(!arrA | | arrA[0]==0)
返回未定义;
设arrB=[];
设预防性=1;
for(设i=0;i if表示不在每个ArrA处向ArrB设置值。因此,如果(2*prevEntry==ArrA[i]),则存在空位置if{
这一行。当你不知道它在哪里崩溃时,坚持使用一个带有“break”的try-catch块,或者在日志中打印变量“i”。正如前面提到的那样,推送将解决它。哦,我的天啊……对不起,这是一个愚蠢的错误!我自己应该看到的。在node.js中,它看起来不同:[,1]
和在Opera中-[空×3,1]
[undefined, undefined, undefined, 1]