这是对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
。
有没有一种方法可以使我的代码不会又长又笨?
答案 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
});
});
});
});