例如有一个很大对象数组
var arr = [{
id: 1,
name: 'a'
},{
id: 10,
name: 'c'
}
.......
];
我现在有一个id = 10, 希望在这个arr中快速查询出这个对象
{
id: 10,
name: 'c'
}
我知道循环arr, 判断循环当前对象的id是否为10可以, 但是有没有更好的方法呢
数组就不太好弄了,要么把数组转成用id做key的hash,复杂度O(1),要么用二分查找复杂度O(logn)也还算效率高
[
{
id: 1,
name: 'a'
},
{
id: 2,
name: 'b'
},
].find(function (x) {
return x.id === 10
})
以上方法用的是分治法的思想,二分查找