JavaScript:使用for循环生成对象

时间:2016-06-23 05:08:57

标签: javascript

所以例如我总共有3个数组,它就像下面的

var arr1 = ['123','456','789'];
var arr2 = ['435','551','778'];
var arr3 = ['5','7','1'];

我尝试将它们存储在一个对象中以供进一步使用。

       var Chart = "";
        for(var i = 0; i < arr1.length ;i++){

             Chart = {
                    x : arr1[i],
                    y : arr2[i],
                    z : arr3[i]
                };

        }

我的方法完成了这项工作但是当我控制它并使用它时它只返回最后一组数据。

所以只使用了{arr1[2],arr2[2],arr3[2]},其余的都丢失了。

我怎么能解决这个问题?

5 个答案:

答案 0 :(得分:5)

您在每次迭代中重新赋值变量,而是将其初始化为数组并将值推送到它。

&#13;
&#13;
var arr1 = ['123','456','789'];
var arr2 = ['435','551','778'];
var arr3 = ['5','7','1'];
var Chart = [];
for (var i = 0; i < arr1.length; i++) {
  Chart.push({
    x: arr1[i],
    y: arr2[i],
    z: arr3[i]
  });
}

console.log(Chart);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

在ES6中通过对象解构;

&#13;
&#13;
var arr1 = ['123','456','789'],
    arr2 = ['435','551','778'],
    arr3 = ['5','7','1'],
   Chart = {"x":[],"y":[],"z":[]};
Chart = {arr1,arr2,arr3};
console.log(Chart);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

无法像以下代码那样初始化对象。

var Chart = "";

应该如下

var Chart = [];

然后对象属性的赋值将是这样的

for (var i = 0; i < arr1.length; i++) {
  Chart.push({
x: arr1[i],
y: arr2[i],
z: arr3[i]
  });

最终片段将是

var Chart = [];
  for (var i = 0; i < arr1.length; i++) {
  Chart.push({
    x: arr1[i],
    y: arr2[i],
    z: arr3[i]
  });

答案 3 :(得分:0)

在ES6中:

var arr1 = ['123','456','789'];
var arr2 = ['435','551','778'];
var arr3 = ['5','7','1'];

arr1.map((x, i) => ({x, y: arr2[i], z: arr3[i]}))

答案 4 :(得分:0)

如前面的答案所述,您重新分配值,并注意如何在下面的代码中初始化对象,试试这个:

var arr1 = ['123','456','789'];
var arr2 = ['435','551','778'];
var arr3 = ['5','7','1'];

var Chart = {};
for(var i = 0; i < arr1.length ;i++){
    Chart['y'+i] = arr1[i];
    Chart['x'+i] = arr2[i];
    Chart['x'+i] = arr3[i];
}