将相同的多个对象推入多个数组

时间:2019-08-20 10:34:01

标签: javascript jquery arrays json object

这是对Make 3 arrays correspond to each other with the first being the object name的跟进。

创建对象后:

let objName = ["object1", "object2", "object3"];
let xyzArr = ["xyz1", "xyz2","xyz3"];
let theArr = [[], [], []];

objName.forEach((name, index) => {
  window[name] = {
    xyz: xyzArr[index],
    arr: theArr[index]
  };
});

我使用getJSON,并希望使用这些值将其推入array: arr[]中。我有多个带有arr[]的对象,我想将值推入所有对象。

这是我到目前为止尝试过的:

$.getJSON(json, result => 
    {result.forEach((elem, i, array) => 
       {object1.arr.push({x:elem.val1, y:elem.val2});
       {object2.arr.push({x:elem.val1, y:elem.val2});
       {object3.arr.push({x:elem.val1, y:elem.val2});
    }) 
 }); 

当我一个接一个地执行此操作时,它会起作用。没有错误。我有办法将这些相同的值推入我曾经拥有的object[i]个数量中吗?

我尝试过:

 $.getJSON(json, result => 
    {result.forEach((elem, i, array) => 
       (for let j=0; j<=5; j++) {
           {object[i].arr.push({x:elem.val1, y:elem.val2});
       )       
    }) 
 });

执行此操作时,我得到Cannot call method 'push' of undefined

有没有一种方法可以使我的代码不会又长又笨?

2 个答案:

答案 0 :(得分:2)

object[i]是指一个名为object的数组,显然不存在。

尝试使用此单线纸:

$.getJSON(json, result => result.forEach((elem, i, array) => window['object' + (i + 1)].data.push({ x: elem.val1, y: elem.val2 })));

答案 1 :(得分:2)

您可以使用数组来存储对象的集合,而不是使用window动态创建变量,如下所示:

let xyzArr = ["xyz1", "xyz2", "xyz3"];
let theArr = [[], [], []];
let objects = [];

objName.forEach((name, index) => {
  objects.push({
    xyz: xyzArr[index],
    arr: theArr[index]
  });
});

然后在向每个对象添加数据时,可以使用.forEach()数组上的objects遍历它,如下所示:

$.getJSON(json, result => {
  result.forEach(elem => {
    objects.forEach(obj => {
      obj.arr.push({
        x: elem.val1,
        y: elem.val2
      });
    });
  });
});