所以,我有一个包含多个值的 javascript 数组:
var keymap = {'name': 'foobaz',
'mappings': [{'id': 1, 'key': 'b'},
{'id': 2, 'key': 'c'},
{'id': 3, 'key': 'd'},
{'id': 1, 'key': 'e'},
{'id': 10, 'key': 'f'},
{'id': 7, 'key': 'g'},
{'id': 1, 'key': 'h'}]
}
我想删除键为“b”的所有条目。请注意,这些 ID 对应于后端 ID。我想要做的是删除一些映射(例如,所有“id”为“1”)。
我试过的是:
for (var i = 0; i < keymap['mappings'].length; i++) {
if (keymap['mappings'][i]['id'] === id_to_match) {
keyboard_map['mappings'].splice(i, 1);
}
}
但是,slice 会就地改变数组的索引,因此现在 i
不会指向正确的索引点(因为任何更高的索引现在都是 i-n
其中 n
是之前完成的切片数。
实现这个的正确方法是什么?
最佳答案
一个简单的方法是递减迭代器(这是有效的,因为你每次迭代都读取长度 - 所以确保你避免缓存长度)
for (var i = 0; i < keymap['mappings'].length; i++) {
if (keymap['mappings'][i]['id'] === id_to_match) {
keyboard_map['mappings'].splice(i, 1);
i--;
}
}
关于javascript - 如何通过在 Javascript 中循环从数组中删除多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19520662/