JavaScript仅打印数组的最后一个元素

时间:2019-11-19 00:15:07

标签: javascript arrays javascript-objects

我想在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],我不知道那是什么。

3 个答案:

答案 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] 引用的对象,因为它们是同一对象。