将相同的多个对象推入多个数组
Posted
技术标签:
【中文标题】将相同的多个对象推入多个数组【英文标题】:Push same multiple objects into multiple arrays 【发布时间】:2019-12-25 13:23:25 【问题描述】:这是对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
。
有没有办法做到这一点而不会使我的代码又长又笨重?
【问题讨论】:
我很惊讶object1.data.push
在 data
未在 object1
上定义时有效?
那是我的错。让我修复代码。我在这里输入时忘记修复它
制作一个 jsFiddle 来演示这个问题。与您从真实代码中改编的已经有问题的 js 相比,调试起来会容易一千倍。
【参考方案1】:
您可以使用数组来存储对象的集合,而不是使用window
动态创建变量,如下所示:
let xyzArr = ["xyz1", "xyz2", "xyz3"];
let theArr = [[], [], []];
let objects = [];
objName.forEach((name, index) =>
objects.push(
xyz: xyzArr[index],
arr: theArr[index]
);
);
然后在向每个对象添加数据时,您可以在 objects
数组上使用 .forEach()
循环遍历它,如下所示:
$.getJSON(json, result =>
result.forEach(elem =>
objects.forEach(obj =>
obj.arr.push(
x: elem.val1,
y: elem.val2
);
);
);
);
【讨论】:
我不想使用对象数组。无论如何都可以在没有数组的情况下使用 forEach 吗? @noob 嘿,你不能使用数组有什么特别的原因吗?数组非常适合用于此类情况【参考方案2】:object[i]
指的是一个名为object
的数组,它显然不存在。
试试这个 oneliner:
$.getJSON(json, result => result.forEach((elem, i, array) => window['object' + (i + 1)].data.push( x: elem.val1, y: elem.val2 )));
【讨论】:
我收到TypeError: Cannot read property 'data' of undefined
错误
那么您的result
的长度大于现有对象?
很确定你需要使用window['object' + i+1]
我认为i
的值可能会超过3
。您很可能需要一个内部 for 循环来遍历所有对象变量以上是关于将相同的多个对象推入多个数组的主要内容,如果未能解决你的问题,请参考以下文章
Javascript/Coffeescript 在值相同时对多个键上的对象数组进行排序
如何解析包含多个相同类型的 JSON 对象(不是数组)的 JSON 对象