javascript - 一个数组的成员是对象,如何判断是否具有某个对象?
PHP中文网
PHP中文网 2017-04-11 09:55:22
[JavaScript讨论组]
var a =[{id:1},{id:2},{name:'cc'}];
var b = {id:1};

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(6)
怪我咯
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判断是否存在

伊谢尔伦

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

天蓬老师

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

大家讲道理

要用遍历方式获取

PHP中文网

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

ringa_lee

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号