首页 > 一个数组的成员是对象,如何判断是否具有某个对象?

一个数组的成员是对象,如何判断是否具有某个对象?

var a =[{id:1},{id:2},{name:'cc'}];
var b = {id:1};

怎么判断a中是否有b一样的对象? 如果不用循环的话有什么好的方法吗?


没有,不过你可以写个Array的扩展方法
但是不循环的话应该是没有办法做到


去看lodash的 _.find 或 _.contain 或 _.include 的源码。看人家怎么做的。怎么是最优的做法。


var a =[{id:1},{id:2},{name:'cc'}];
var b = {id:1};

console.log(JSON.stringify(a).indexOf(JSON.stringify(b))!=-1);

非常trick的方法,把数组和对象全转成string, 然后使用string.indexOf判断是否存在


要用遍历方式获取


循环数组,比较数组元素中各个属性和对象的各个属性是否相等。不过如果属性多了就不是好方法了。


自己定义对象的equal方法(也是要用到for遍历属性,如果属性是Object,要用到递归判断,还有原型上的属性也要考虑是否相等),网上有很多,可以直接拷过来用,数组是否包含,在循环里面调你定义的equal方法去判断是否包含。

【热门文章】
【热门文章】