var set = [{"color":"blue"},{"color":"green"},{"color":"red"},{"color":"green"}];
set.find({"color":"green"})
db 呼び出しのような処理を実行し、そのプロパティを含むオブジェクトで満たされた配列を返すようにしたいと思います。
ベストアンサー1
使用Array#filter
この場合、コードは次のようになります。
var results = set.filter(function (entry) { return entry.color === "green"; });
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" });
ここでもECMAScript 5メソッドを使用していますObject.keys
そしてArray#every
なので、ES5 shim を使用します。(このコードは ES5 shim がなくても実行可能ですが、手動ループを使用するため、記述や読み取りがあまり楽しくありません。)