659 Stimmen

Einen Wert in einem Array von Objekten in Javascript finden

Ich weiß, dass ähnliche Fragen schon einmal gestellt wurden, aber diese ist ein wenig anders. Ich habe ein Array von unbenannten Objekten, die ein Array von benannten Objekten enthalten, und ich muss das Objekt, wo "Name" ist "String 1" zu bekommen. Hier ist ein Beispiel-Array.

var array = [
    { name:"string 1", value:"this", other: "that" },
    { name:"string 2", value:"this", other: "that" }
];

Aktualisierung: Ich hätte das schon früher sagen sollen, aber sobald ich es gefunden habe, möchte ich es durch ein bearbeitetes Objekt ersetzen.

70voto

Zahirul Haque Punkte 1356
var array = [
    { name:"string 1", value:"this", other: "that" },
    { name:"string 2", value:"this", other: "that" }
];

var foundValue = array.filter(obj=>obj.name==='string 1');

console.log(foundValue);

27voto

MarvinVK Punkte 2709

Mit einer foreach:

let itemYouWant = null;
array.forEach((item) => {
    if (item.name === 'string 1') {
        itemYouWant = item;
    }
});
console.log(itemYouWant);

Oder noch besser mit einer Karte:

const itemYouWant = array.map((item) => {
    if (item.name === 'string 1') {
        return item;
    }
    return null;
});
console.log(itemYouWant);

24voto

João Silva Punkte 84947

Entweder verwenden Sie eine einfache for -Schleife:

var result = null;
for (var i = 0; i < array.length; i++) { 
  if (array[i].name === "string 1") { 
    result = array[i];
    break;
  } 
}

Oder wenn Sie können, d.h. wenn Ihr Browser dies unterstützt, verwenden Sie Array.filter die sehr viel knapper ist:

var result = array.filter(function (obj) {
  return obj.name === "string 1";
})[0];

22voto

Wallace Maxters Punkte 3122

Mit underscore.js verwenden Sie die findWhere-Methode:

var array = [
    { name:"string 1", value:"this", other: "that" },
    { name:"string 2", value:"this", other: "that" }
];

var result = _.findWhere(array, {name: 'string 1'});

console.log(result.name);

Siehe dies in JSFIDDLE

20voto

Durgpal Singh Punkte 9633

Einzeilige Antwort. Sie können die Filterfunktion verwenden, um das Ergebnis zu erhalten.

var array = [
    { name:"string 1", value:"this", other: "that" },
    { name:"string 2", value:"this", other: "that" }
];

console.log(array.filter(function(arr){return arr.name == 'string 1'})[0]);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X