我想在this.results
里面循环,这是来自服务器的JSON,但是我的代码仅打印数据的最后一个元素
let tempEvent = [];
this.results.map(element => {
tempEvent.push(element);
});
let arr = [];
for (let i = 0; i < tempEvent.length; i++) {
arr = [{ name: this.results[i].name }];
}
console.log(arr);
我已经尝试这样做:
for (let i = 0; i < tempEvent.length; i++) {
arr += [{ name: this.results[i].name }];
}
但是它给了我[Object object]
,我不知道那是什么。
答案 0 :(得分:1)
您正在重新分配整个阵列。您可以在每次迭代中推送该项目。
我还相信您想在此处推送一个对象而不是另一个数组:
arr.push({ name: this.results[i].name });
OR :使用 index
arr[i] = { name: this.results[i].name };
答案 1 :(得分:0)
尝试类似的东西:
arr[i] = [{ name: this.results[i].name }];
或
arr.add([{ name: this.results[i].name }]);
相反。
答案 2 :(得分:0)
其他人对为什么只获得最后一个元素却又以错误的方式使用 map 给出了答案。它基于对调用的数组元素应用回调的情况下返回一个数组,因此在这种情况下:
let tempEvent = this.results.map(element => element);
仅复制 results 数组。您还会像 forEach 这样使用它来丢弃 map 的结果,即:
let tempEvent = [];
this.results.forEach(element => tempEvent.push(element));
复制数组有很多更短的方法(对性能一无所知,但可能无关紧要),您也可以这样做:
let tempEvent = [...this.results];
或
let tempEvent = Array.from(this.results);
,依此类推。一些代码:
let results = [0,1,2];
let tempEvent = results.map(element => element);
console.log(tempEvent);
tempEvent = [...results];
console.log(tempEvent)
tempEvent = Array.from(results);
console.log(tempEvent);
请注意,尽管这会复制结果 中的值,但这些值似乎是对对象的引用,但不会复制实际的对象。修改 tempEvent [i] 引用的对象也将修改 results [i] 引用的对象,因为它们是同一对象。