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方法去判断是否包含。