Orlok: reduce() ist heute sehr eigensinnig!

Beitrag lesen

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