我有一个数组,格式如下:
var clients = [{
"id": 1,
"hash": 5c5fbbb047984ca8eec6dc7a3d994c09,
"more": {...}
},
{
"id": 2,
"hash": 620628ce37817a94476d55e55a543bee,
"more": {...}
},
{...},
{...}];
它包含大约25个对象,但这可能会改变。我的程序获取一个ID,这是一个整数,它必须在客户端数组中查找,找到具有指定ID的对象,然后从数组中删除该对象。
考虑到可能存在相对大量的对象,最好,最有效的方法是什么?
答案 0 :(得分:2)
您可以使用Array.prototype.filter
功能,就像这样
var clients = [{"id": 1, "hash": "5c5fbbb047984ca8eec6dc7a3d994c09"},
{"id": 2, "hash": "620628ce37817a94476d55e55a543bee"}];
var idToRemove = 1;
clients = clients.filter(function(currentObject) {
return currentObject.id !== idToRemove;
});
console.log(clients);
<强>输出强>
[ { id: 2, hash: '620628ce37817a94476d55e55a543bee' } ]
答案 1 :(得分:1)
您可以遍历数组并删除具有给定id
的条目。
function removeClient(clients, id) {
for(var i = 0; i < clients.length; i++) {
if(clients[i].id === id) {
clients.splice(i, 1);
return;
}
}
}
您也可以使用Array.prototype.filter
函数,但我更喜欢这种迭代解决方案有两个原因:
Array.prototype.filter
是一种ECMAScript 5功能,在IE9之前IE不支持。