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

JavaScript只打印数组的最后一个元素,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我想在这个内循环。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 }];

我想在
这个内循环。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);
让tempEvent=[];
this.results.map(元素=>{
tempEvent.push(元素);
});
设arr=[];
for(设i=0;i
我已经尝试过这样做:

for (let i = 0; i < tempEvent.length; i++) {
    arr += [{ name: this.results[i].name }];
}
for(设i=0;i

但是它给了我
[Object Object]
,我不知道那是什么。

你正在重新分配整个数组。您可以在每次迭代中推送该项

我还认为您希望在此处推送一个对象而不是另一个数组:

arr.push({ name: this.results[i].name });
或:使用索引

尝试以下方法:

arr[i] = [{ name: this.results[i].name }];


相反。

其他人有你的答案,为什么你只得到最后一个元素,但你使用地图的方式也不对。它基于对调用它的数组的元素应用回调返回数组,因此在本例中:

let tempEvent = this.results.map(element => element);
它只是复制结果数组。您还将丢弃map的结果,像forEach一样使用它,这将是:

let tempEvent = [];
this.results.forEach(element => tempEvent.push(element));
复制阵列有许多较短的方法(不知道性能如何,但可能与性能无关),您也可以这样做:

let tempEvent = [...this.results];

等等。一些代码:

let results=[0,1,2];
让tempEvent=results.map(元素=>element);
console.log(tempEvent);
tempEvent=[…结果];
console.log(tempEvent)
tempEvent=Array.from(结果);

console.log(tempEvent)改为尝试执行
console.log(JSON.stringify(arr))
。您正在创建的数组是一个对象数组,每个对象都有一个
name
属性和一个值。所以你得到的是
[Object Object]
,因为你试图输出一个对象,需要告诉js如何显示它。它还打印[Object Object],我是个白痴。在for循环中,执行
arr.push({name:this.results[i].name}];
-否则,每次都用最后一个成员覆盖数组。这就是您要查找的
let tempEvent = [];
this.results.forEach(element => tempEvent.push(element));
let tempEvent = [...this.results];
let tempEvent = Array.from(this.results);