猿问

将相同的多个对象推送到多个数组中

这是使 3 个数组相互对应的后续操作,第一个是对象名称。


创建对象后:


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.


有没有办法在不使我的代码又长又笨重的情况下做到这一点?


白猪掌柜的
浏览 391回答 2
2回答

扬帆大鱼

object[i]指的是一个object显然不存在的命名数组。试试这个oneliner:$.getJSON(json,&nbsp;result&nbsp;=>&nbsp;result.forEach((elem,&nbsp;i,&nbsp;array)&nbsp;=>&nbsp;window['object'&nbsp;+&nbsp;(i&nbsp;+&nbsp;1)].data.push({&nbsp;x:&nbsp;elem.val1,&nbsp;y:&nbsp;elem.val2&nbsp;})));

大话西游666

window您可以使用数组来存储对象的集合,而不是使用 动态创建变量,如下所示:let xyzArr = ["xyz1", "xyz2", "xyz3"];let theArr = [[], [], []];let objects = [];objName.forEach((name, index) => {&nbsp; objects.push({&nbsp; &nbsp; xyz: xyzArr[index],&nbsp; &nbsp; arr: theArr[index]&nbsp; });});然后在向每个对象添加数据时,您可以使用数组.forEach()上的a 循环遍历它,objects如下所示:$.getJSON(json, result => {&nbsp; result.forEach(elem => {&nbsp; &nbsp; objects.forEach(obj => {&nbsp; &nbsp; &nbsp; obj.arr.push({&nbsp; &nbsp; &nbsp; &nbsp; x: elem.val1,&nbsp; &nbsp; &nbsp; &nbsp; y: elem.val2&nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; });&nbsp; });});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答