var set = [{"color":"blue"},{"color":"green"},{"color":"red"},{"color":"green"}];
Run Code Online (Sandbox Code Playgroud)
我希望能够执行类似db调用的操作,set.find({"color":"green"})并让它返回一个包含该属性的对象数组.
Dom*_*nic 54
使用Array#filter,对于这种特殊情况,代码看起来像
var results = set.filter(function (entry) { return entry.color === "green"; });
Run Code Online (Sandbox Code Playgroud)
Array#filter在某些较旧的浏览器中没有实现,因此请查看链接文章以获得向后兼容的垫片,或者更好地获得完整的ES5垫片.
对于更一般的情况,这只是扩展这个想法的问题:
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" });
Run Code Online (Sandbox Code Playgroud)
同样,我使用的ECMAScript 5种方法Object.keys和Array#every,所以使用ES5垫片.(代码在没有ES5垫片的情况下可行,但使用手动循环,写入和读取的乐趣要小得多.)
| 归档时间: |
|
| 查看次数: |
50543 次 |
| 最近记录: |