Javascript 如何通过his索引将项推送到Obj数组

Javascript 如何通过his索引将项推送到Obj数组,javascript,Javascript,我需要将我的物品推入Obj阵列,现在我多次获得最后一条记录 代码笔: const生命点=[“一”、“二”、“三”]; 设remapImages=newarray(); const item=新对象(); 命中率。forEach(函数(i,索引){ item.img=document.getElementById(i); item.hit=document.getElementById(i).offsetTop-window.innerHeight; 控制台日志(项目); 重新包装。推送(项目)

我需要将我的物品推入Obj阵列,现在我多次获得最后一条记录

代码笔:

const生命点=[“一”、“二”、“三”];
设remapImages=newarray();
const item=新对象();
命中率。forEach(函数(i,索引){
item.img=document.getElementById(i);
item.hit=document.getElementById(i).offsetTop-window.innerHeight;
控制台日志(项目);
重新包装。推送(项目);
});
控制台日志(remapImages)
  • 1
  • 2
  • 3

您应该创建多个对象,否则会多次推送同一对象引用:

const hitpoints = ["one", "two", "three"];
let remapImages = new Array();

hitpoints.forEach(function(i, index) {
  const item = new Object();
  item.img = document.getElementById(i);
  item.hit = document.getElementById(i).offsetTop - window.innerHeight;
  console.log(item);
  remapImages.push(item);
});

console.log(remapImages);

由于它是一个引用,它在foreach循环中得到更新,这就是为什么您会多次看到该对象的最新值。

Declare
item
在foreach回调函数中。当前,您的代码创建一个对象,该对象在每次迭代中都会得到更新和推送<代码>重新打包。推送(项目)不创建对象的副本。