javascript对象数组如何快速找出存储的某个对象

例如有一个很大对象数组

var arr = [{
    id: 1, 
    name: 'a'
},{
    id: 10, 
    name: 'c'
}
.......
];

我现在有一个id = 10, 希望在这个arr中快速查询出这个对象

{
    id: 10,
    name: 'c'
}

我知道循环arr, 判断循环当前对象的id是否为10可以, 但是有没有更好的方法呢

阅读 20.7k
4 个回答
[
    {
        id: 1,
        name: 'a'
    },
    {
        id: 2,
        name: 'b'
    },
].find(function (x) {
    return x.id === 10
})

以上方法用的是分治法的思想,二分查找

数组就不太好弄了,要么把数组转成用id做key的hash,复杂度O(1),要么用二分查找复杂度O(logn)也还算效率高

新手上路,请多包涵
var arr1 = [{
    id: 1,
    name: 'yc',
    age: 1
    },{
    id: 20,
    name: 'lqy',
    age: 2
}];

var arr2 = [];

//转换成 hash,以空间换时间
arr1.forEach(function(element, index) {
    arr2[element.id] = element;
});

arr1 = arr2;

console.log(arr1[20],arr1); 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题