为什么当我打印数组的元素时,它以 undefined 开头,然后是我插入的数字。我什至尝试 cosnole.log(search[j]) 并且它正是我想要的。但出于某种原因,我认为我所做的第一个 += 是未定义的。
function new_vid(){
let x=1;
console.log("################################################################");
for(let i=0; i<search1.length; i++){
if(search1[i]=="s" && search1[i+1]=="n" && search1[i+2]=="i" && search1[i+3]=="p" && search1[i+4]=="p" && search1[i+5]=="e" && search1[i+6]=="t"){
for(let j=i+36; j<i+46; j++){
console.log(search1[j]);
dates[x]+=search1[j];
}
x++;
}
}
console.log(dates[0]);
console.log(dates[1]);
console.log("##################################################################");
}
输出是:
未定义2021-08-04
未定义2021-08-01
dates[x]
是undefined
第一次插入之前。而dates[x] += search1[j]
在原则上执行以下操作:
dates[x] = dates[x] + search1[j]
但undefined + "foo"
结果undefinedfoo
是 JS。用
dates[x] = (dates[x] || "") + search1[j]
dates[x] || ""
如果dates[x]
未定义,这种方式将返回空字符串,从而将空字符串与search1[j]
但是,正如您所说,您来自 C++ 背景,我有点怀疑您在没有任何边界检查的情况下粗心地使用索引。你的算法会越界,因为你i
在整个search1
数组中迭代你的索引,然后访问一个 index i+1
,i+2
甚至i+36
.
这不会在 JS 中崩溃,但请注意,如果索引超出数组范围,它search1[j]
也会返回,因此您可能需要undefined
j
dates[x] = (dates[x] || "") + (search1[j] || "")
以及。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句