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.

1389voto

Šime Vidas Punkte 172810

Suche nach dem Array-Element:

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

let obj = arr.find(o => o.name === 'string 1');

console.log(obj);

Ersetzen des Array-Elements:

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

let obj = arr.find((o, i) => {
    if (o.name === 'string 1') {
        arr[i] = { name: 'new string', value: 'this', other: 'that' };
        return true; // stop searching
    }
});

console.log(arr);

324voto

Asciiom Punkte 9719

Sie können das Array in einer Schleife durchlaufen und auf diese Eigenschaft testen:

function search(nameKey, myArray){
    for (let i=0; i < myArray.length; i++) {
        if (myArray[i].name === nameKey) {
            return myArray[i];
        }
    }
}

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

const resultObject = search("string 1", array);
console.log(resultObject)

223voto

rujmah Punkte 2207

Unter ES6 können Sie Array.prototype.find(predicate, thisArg?) etwa so:

array.find(x => x.name === 'string 1')

http://exploringjs.com/es6/ch_arrays.html#_searching-for-array-elements https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find

Um dann dieses Objekt zu ersetzen (und ein anderes cooles ES6 Methode fill ) könnten Sie etwas wie folgt tun:

let obj = array.find(x => x.name === 'string 1');
let index = array.indexOf(obj);
array.fill(obj.name='some new string', index, index++);

86voto

p.pradnya Punkte 1019

Gemäß ECMAScript 6 können Sie die findIndex Funktion.

array[array.findIndex(x => x.name == 'string 1')]

85voto

Gaurav Sharma Punkte 1615

Sie haben folgendes Snippet:

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

Sie können die folgende Funktion verwenden, um nach Artikeln zu suchen

const search = what => array.find(element => element.name === what);

Und Sie können überprüfen, ob das Objekt gefunden wurde oder nicht.

const found = search("string1");
if (found) {
    console.log(found.value, found.other);
} else {
    console.log('No result found');
}

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