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)?