Javascript 如何覆盖数组中的对象而不是添加新对象

Javascript 如何覆盖数组中的对象而不是添加新对象,javascript,Javascript,var foo=[]; var btn=document.getElementById(“foo”); btn.addEventListener(“单击”,函数(){ 风险值数据={ “id”:1, “轨道”:{ “地图名称”:[ {x:21,y:21} ] } } foo.push(数据); console.log(foo); }); 添加希望这能奏效。试试看 试试这样的 let newData = []; newData = data; foo = newData; 在这里,newData

var foo=[];
var btn=document.getElementById(“foo”);
btn.addEventListener(“单击”,函数(){
风险值数据={
“id”:1,
“轨道”:{
“地图名称”:[
{x:21,y:21}
]
}
}
foo.push(数据);
console.log(foo);
});

添加
希望这能奏效。试试看 试试这样的

let newData = [];
newData = data;
foo = newData;

在这里,newData array无需推送即可为foo数组获取数据对象和插入及其相等。因此,总是foo数组只有newData数组中的值。

不要使用数组,而是使用关键点为轨迹ID的对象。然后,您可以为感兴趣的轨迹查找或创建元素,并更新其
map\u name
数组

var foo={};
var btn=document.getElementById(“foo”);
btn.addEventListener(“单击”,函数(){
var cur_track=foo[1]|{
id:1,
轨道:{
地图名称:[]
}
};
cur_track.track.map_name.push({
x:21,
y:21
});
console.log(foo);

});这可能会给你解决这个问题的灵感

var foo = [];

var btn = document.getElementById("foo");
btn.addEventListener("click", function () {
  var targetId = 1;
  var targetIndex = foo.findIndex(f => f.id === targetId); // check if foo already have the id
  var coordinate = {
    x: 21,
    y: 21
  };

  // if found
  if (targetIndex > -1) {
    // push the coordinate inside `map_name` for target 
    foo[targetIndex].track.map_name.push(coordinate);
  } else {
    var data = {
      "id": targetId,
      "track": {
        "map_name": [
          coordinate
        ]
      }
    }
    foo.push(data);
  }

  console.log(foo);
});

您是否尝试使用
foo[itemIndex].track=data.track
而不是'foo.push(data)?