javascript – 在对象数组中查找匹配的对象?

前端之家收集整理的这篇文章主要介绍了javascript – 在对象数组中查找匹配的对象?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
var set = [{"color":"blue"},{"color":"green"},{"color":"red"},{"color":"green"}];@H_404_3@ 
 

我想要像db调用set.find({“color”:“green”})这样做,并返回一个包含该属性的对象的数组.

解决方法

使用 Array#filter,对于这种特殊情况,代码将是这样的
var results = set.filter(function (entry) { return entry.color === "green"; });@H_404_3@ 
 

Array#过滤器在一些旧的浏览器中没有实现,所以看到链接文章是为了向后兼容的垫片,或者更好的是获得a full-fledged ES5 shim.

对于更一般的情况,这只是一个扩展这个想法的问题:

function findByMatchingProperties(set,properties) {
    return set.filter(function (entry) {
        return Object.keys(properties).every(function (key) {
            return entry[key] === properties[key];
        });
    });
}

var results = findByMatchingProperties(set,{ color: "green" });@H_404_3@ 
 

再次,我使用ECMAScript 5方法Object.keysArray#every,所以使用ES5垫片. (该代码在没有ES5垫片的情况下是可行的,但使用手动循环,写入和读取的乐趣更少).

猜你在找的JavaScript相关文章