我一直试图在每个循环中将两个项目组合在一起,结果是null,我如何检查"项目"所以不要无效?
var oTitle = [],
items = ['a1', 'a2', 'b1', 'b2', 'c1', 'c2'];
for (var i=0; i < items.length; i++) {
oTitle[i] = {
one: '' + items[i], // items[i].value
two: '' + items[++i]
};
}
console.log(JSON.stringify(oTitle));
// [{"one":"a1","two":"a2"},null,{"one":"b1","two":"b2"},null,{"one":"c1","two":"c2"}]
答案 0 :(得分:2)
因为您更改了i
循环体中的for
。当您致电items[++i]
时,它实际上会更改i
。在第二次迭代中,i
不是1
,而是2
。
oTitles
0
索引准备就绪,但在第二次迭代i
为2
。所以您的值为0 2 4
,依此类推。对于1,3,5
和其他索引,它没有值,所以为什么它打印你null
。
实际上,对于那些索引,您的数组不会包含null
,而是undefined
。但由于您使用了JSON.stringify
,因此会将undefined
转换为null
。
要实现预期的结果,您需要为数组的索引保留另一个变量,或者使用数组的push
方法对其进行索引。
<强> INDEX 强>
var oTitle = [];
var index = 0;
items = ['a1', 'a2', 'b1', 'b2', 'c1', 'c2'];
for (var i=0; i < items.length; i++) {
oTitle[index] = {
one: '' + items[i], // items[i].value
two: '' + items[++i]
};
index++;
}
console.log(JSON.stringify(oTitle));
&#13;
<强> PUSH 强>
var oTitle = [];
items = ['a1', 'a2', 'b1', 'b2', 'c1', 'c2'];
for (var i=0; i < items.length; i++) {
oTitle.push({
one: '' + items[i], // items[i].value
two: '' + items[++i]
});
}
console.log(JSON.stringify(oTitle));
&#13;
答案 1 :(得分:1)
只需使用push()
并让新数组的索引自行处理
var oTitle = [],
items = ['a1', 'a2', 'b1', 'b2', 'c1', 'c2'];
for (var i = 0; i < items.length; i++) {
oTitle.push({
one: '' + items[i], // items[i].value
two: '' + items[++i]
});
}
console.log(JSON.stringify(oTitle, null, ' '))
&#13;