这是使 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 })));
大话西游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
});
});
});
});
添加回答
举报
0/150
提交
取消
