У меня есть карта, определенная следующим образом, и затем я добавляю все узлы на карту.
var map = {}
nodes.forEach(function(d, i) {
map[d.id] = i;
})
Во фрагменте кода нажатие кнопки del удаляет узел GW путем вызова функции del.
Я могу удалить запись из узлов, но не знаю, как удалить ее с карты.
это связано с моим Сообщение D3.js SO
В противном случае я не использую var map1 = new Map();, думаю, сработало бы следующее.
map.delete(d);
<button id = "del" onclick = "del('GW')">del </button>
<script>
var nodes = [{
id: "FH",
x: 100,
y: 110
},
{
id: "TP",
x: 200,
y: 110
},
{
id: "GW",
x: 200,
y: 110
},
{
id: "DB",
x: 100,
y: 110
}
]
var map = {}
nodes.forEach(function(d, i) {
map[d.id] = i;
})
function del(n) {
var i = map[n];
mousedownNode2(nodes[i], i);
}
function mousedownNode2(d, i) {
nodes.splice(i, 1);
console.info(map);
console.info(nodes);
}
</script>Спасибо, @KoshVery, delete map[n]; подействовал. Есть ли какое-то конкретное название для map = {}? я думаю, что карта на самом деле var map1 = new Map();
map = {} - это сокращение от map = new Object();, а не от new Map().
@nyi Как упоминалось выше, вы используете объект, а не карту. Вы можете использовать настоящую карту, которую быстрее перебирать. Также вы можете использовать карту D3: var map = d3.map().



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


delete map[d.id]?