javascript:在 For 循环中将值推送到数组变量中,但值附加(推送)未定义
2020-03-09
46
if (objJson[0].task.length > 0) {
var Arrayset = [];
var categories = [];
var starts1 = [];
var ends1 = [];
var val1 = [];
var val2 = [];
for (var i = 0; i < objJson[0].task.length; i++) {
var syearval = parseInt(objJson[0].PSDate[i].substr(0, 4));
var smonthval = parseInt(objJson[0].PSDate[i].substr(5, 2));
var sdateval = parseInt(objJson[0].PSDate[i].substr(8, 2));
var eyearval = parseInt(objJson[0].PEDate[i].substr(0, 4));
var emonthval = parseInt(objJson[0].PEDate[i].substr(5, 2));
var edateval = parseInt(objJson[0].PEDate[i].substr(8, 2));
val1=[Date.UTC(syearval, smonthval, sdateval)];
val2= [Date.UTC(eyearval, emonthval, edateval)];
starts1.push(val1[i]);
ends1.push(val2[i]);
Arrayset.push({ name: objJson[0].task[i], completed: objJson[0].taskpercent[i], start:starts1[i], end:ends1[i] });
}
MainLoadChart(Arrayset);
}
}
声明了两个数组变量 starts1 和 ends1 。
当 i=0 时,For 循环
starts1=[1574035200000] ends1=[1574640000000]
值正确添加到数组中。
同样,当 i=1 等时,for 循环会进行迭代
starts1=[1574035200000, undefined ] ends1=[1574640000000, undefined ]
在 starts1 和 ends1 数组中,undefined 会添加到数组中。我尝试了所有方法但都无法解决这个问题。
2个回答
当 i = 1
您的 val1 在数组中将只有 1 个值,对于 val2 也是如此,即数组将只有 1 个元素
并且您正在推送索引值,该值将是
undefined
怎么样
代替
starts1.push(val1[i]);
ends1.push(val2[i]);
使用
starts1.push(val1[0]);
ends1.push(val2[0]);
Kiran Shinde
2020-03-09
val1
和
val2
的赋值存在问题。您重复地将一个包含 1 个项目的新数组赋值给它,这就是为什么索引 0 处有值(当 i=0 时)而索引 1、2、3 等处有
undefined
。
您实际上可以跳过
val1、val2
的声明和赋值,直接将值推送到数组。
//val1=[Date.UTC(syearval, smonthval, sdateval)];
//val2= [Date.UTC(eyearval, emonthval, edateval)];
starts1.push(Date.UTC(syearval, smonthval, sdateval));
ends1.push(Date.UTC(eyearval, emonthval, edateval));
as-if-i-code
2020-03-09