循环并组合每两个项目

时间:2017-02-04 19:07:31

标签: javascript for-loop

我一直试图在每个循环中将两个项目组合在一起,结果是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"}]

2 个答案:

答案 0 :(得分:2)

因为您更改了i循环体中的for。当您致电items[++i]时,它实际上会更改i。在第二次迭代中,i不是1,而是2

oTitles 0索引准备就绪,但在第二次迭代i2。所以您的值为0 2 4,依此类推。对于1,3,5和其他索引,它没有值,所以为什么它打印你null

实际上,对于那些索引,您的数组不会包含null,而是undefined。但由于您使用了JSON.stringify,因此会将undefined转换为null

要实现预期的结果,您需要为数组的索引保留另一个变量,或者使用数组的push方法对其进行索引。

<强> INDEX

&#13;
&#13;
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;
&#13;
&#13;

<强> PUSH

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:1)

只需使用push()并让新数组的索引自行处理

&#13;
&#13;
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;
&#13;
&#13;