为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白猪掌柜的 2021-09-17 17:22:52
这是使 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.有没有办法在不使我的代码又长又笨重的情况下做到这一点?
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

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

试试这个oneliner:

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


查看完整回答
反对 回复 2021-09-17
?
大话西游666

TA贡献1817条经验 获得超14个赞

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


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

let theArr = [[], [], []];

let objects = [];


objName.forEach((name, index) => {

  objects.push({

    xyz: xyzArr[index],

    arr: theArr[index]

  });

});

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


$.getJSON(json, result => {

  result.forEach(elem => {

    objects.forEach(obj => {

      obj.arr.push({

        x: elem.val1,

        y: elem.val2

      });

    });

  });

});


查看完整回答
反对 回复 2021-09-17
  • 2 回答
  • 0 关注
  • 390 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号