Hallo
var arr = [{key1: 12, key2: 21, key3: 31}, {key1: 11, key2: 12, key3: 13}]; var ObjektIndex_finden = arr.reduce(function(acc, curr){ if (curr.key2 === 21) { acc = arr.indexOf(curr); } return acc; }); console.log(ObjektIndex_finden);
Wenn du der Methode reduce
nicht als drittes Argument einen Anfangswert für den Akkumulator übergibst, dann wird beim ersten Aufruf der Rückruffunktion standardmäßig das erste Element des Arrays verwendet. Deswegen bekommst du hier am Ende das erste Objekt in dem Array als Ergebnis. Du reichst es einfach durch.
Eigentlich willst du aber auch gar nicht reduce
verwenden, sondern findIndex
:
const array = [
{key1: 12, key2: 21, key3: 31},
{key1: 11, key2: 12, key3: 13}
];
array.findIndex(object => object.key2 === 21); // 0
Viele Grüße,
Orlok