OK, es gibt mehrere Möglichkeiten, das zu tun, aber lassen Sie uns mit der einfachsten und neuesten Methode beginnen, dies zu tun, diese Funktion wird find()
genannt.
Sei einfach vorsichtig, wenn du find
benutzt, denn selbst IE11 unterstützt es nicht, also muss es transpiliert werden...
du hast also dieses Objekt, wie du gesagt hast:
var jsObjects = [
{a: 1, b: 2},
{a: 3, b: 4},
{a: 5, b: 6},
{a: 7, b: 8}
];
und du kannst eine Funktion schreiben und es so bekommen:
function filterValue(obj, key, value) {
return obj.find(function(v){ return v[key] === value});
}
und die Funktion so verwenden:
filterValue(jsObjects, "b", 6); //{a: 5, b: 6}
Auch in ES6 für eine noch kürzere Version:
const filterValue = (obj, key, value)=> obj.find(v => v[key] === value);
Diese Methode gibt nur den ersten Wert zurück, der übereinstimmt..., für ein besseres Ergebnis und Browserunterstützung, können Sie filter
verwenden:
const filterValue = (obj, key, value)=> obj.filter(v => v[key] === value);
und wir werden [{a: 5, b: 6}]
zurückgeben...
Diese Methode gibt stattdessen ein Array zurück...
Es ist auch möglich, eine einfache for-Schleife zu verwenden, um eine Funktion wie diese zu erstellen:
function filteredArray(arr, key, value) {
const newArray = [];
for(i=0, l=arr.length; i
`und rufe es auf wie folgt:
filteredArray(jsObjects, "b", 6); //[{a: 5, b: 6}]`