var foo = [];
var btn = document.getElementById("foo");
btn.addEventListener("click", function(){
var data = {
"id": 1,
"track": {
"map_name": [
{x: 21, y: 21}
]
}
}
foo.push(data);
console.log(foo);
});
<button id="foo">Add</button>
在这里,每次单击“添加”时,我都将整个对象添加到数组中。哪个不好,我知道。我想知道如何仅覆盖id为1的对象内部,并将新对象添加到该"map_name"
数组中。因此,我避免使用新值一遍又一遍地克隆同一对象。我该如何存档?
答案 0 :(得分:0)
希望这会起作用。去尝试一下 尝试类似
constexpr int sum = DRsum(matrix);
在这里,newData数组将为您提供数据对象,并且无需推入就可以插入foo数组。因此,始终foo数组仅具有newData数组中的值。
答案 1 :(得分:0)
使用键为轨道ID的对象代替使用数组。然后,您可以找到或创建感兴趣的曲目的元素,并更新其map_name
数组。
var foo = {};
var btn = document.getElementById("foo");
btn.addEventListener("click", function() {
var cur_track = foo[1] || {
id: 1,
track: {
map_name: []
}
};
cur_track.track.map_name.push({
x: 21,
y: 21
});
console.log(foo);
});
答案 2 :(得分:0)
这可能会给您带来解决问题的灵感
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);
});