扫码关注官方订阅号
var a =[{id:1},{id:2},{name:'cc'}]; var b = {id:1};
怎么判断a中是否有b一样的对象? 如果不用循环的话有什么好的方法吗?
认证高级PHP讲师
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判断是否存在
string
string.indexOf
没有,不过你可以写个Array的扩展方法但是不循环的话应该是没有办法做到
自己定义对象的equal方法(也是要用到for遍历属性,如果属性是Object,要用到递归判断,还有原型上的属性也要考虑是否相等),网上有很多,可以直接拷过来用,数组是否包含,在循环里面调你定义的equal方法去判断是否包含。
要用遍历方式获取
去看lodash的 _.find 或 _.contain 或 _.include 的源码。看人家怎么做的。怎么是最优的做法。
循环数组,比较数组元素中各个属性和对象的各个属性是否相等。不过如果属性多了就不是好方法了。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
非常trick的方法,把数组和对象全转成
string, 然后使用string.indexOf判断是否存在没有,不过你可以写个Array的扩展方法
但是不循环的话应该是没有办法做到
自己定义对象的equal方法(也是要用到for遍历属性,如果属性是Object,要用到递归判断,还有原型上的属性也要考虑是否相等),网上有很多,可以直接拷过来用,数组是否包含,在循环里面调你定义的equal方法去判断是否包含。
要用遍历方式获取
去看lodash的 _.find 或 _.contain 或 _.include 的源码。看人家怎么做的。怎么是最优的做法。
循环数组,比较数组元素中各个属性和对象的各个属性是否相等。不过如果属性多了就不是好方法了。