reduce() ist heute sehr eigensinnig!
bearbeitet von
Hallo
> Wenn ich der Methode einen Ausgangswert von 0 hinzufüge, ist das Resultat undefined
Aber nicht deswegen.
> ~~~JavaScript
> 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;
> }
> }, 0);
>
>
> console.log(ObjektIndex_finden);
> ~~~
Schau mal genau hin, wo du dein `return`{: .language-javascript}‐Statement notiert hast.
Wenn die Bedingung nicht wahr ist, gibt dein *Reducer*{: @en} implizit den Wert `undefined` zurück. Du willst aber immer den akkumulierten Wert zurückgeben, wobei in dem Fall, dass die Bedingung wahr ist, der Wert angepasst wird.
~~~JavaScript
var ObjektIndex_finden = arr.reduce(function(acc, curr, index){
if (curr.key2 === 21) {
acc = index;
}
return acc;
}, 0);
~~~
Wenn du es so schreibst, wird dir der richtige Index ausgegeben, den du übrigens nicht mit der Methode `indexOf` ermitteln musst. Der Index wird als drittes Argument an deine Rückruffunktion übergeben.
Viele Grüße,
Orlok
reduce() ist heute sehr eigensinnig!
bearbeitet von
Hallo
> Wenn ich der Methode einen Ausgangswert von 0 hinzufüge, ist das Resultat undefined
Aber nicht deswegen.
> ~~~JavaScript
> 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;
> }
> }, 0);
>
>
> console.log(ObjektIndex_finden);
> ~~~
Schau mal genau hin, wo du dein `return`{: .language-javascript}‐Statement notiert hast.
Wenn die Bedingung nicht wahr ist, gibt dein *Reducer*{: @en} implizit den Wert `undefined` zurück. Du willst aber immer den akkumulierten Wert zurückgeben, wobei in dem Fall, dass die Bedingung wahr ist, der Wert angepasst wird.
~~~JavaScript
var ObjektIndex_finden = arr.reduce(function(acc, curr, index){
if (curr.key2 === 21) {
acc = index;
}
return acc;
}, 0);
~~~
Wenn du es so schreibst, wird dir der richtige Index ausgegeben, den du übrigens nicht mit der Methode `indexOf` ermitteln musst. Der Index wird als dritter Parameter an deine Rückruffunktion übergeben.
Viele Grüße,
Orlok
reduce() ist heute sehr eigensinnig!
bearbeitet von
Hallo
> Wenn ich der Methode einen Ausgangswert von 0 hinzufüge, ist das Resultat undefined
Aber nicht deswegen.
> ~~~JavaScript
> 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;
> }
> }, 0);
>
>
> console.log(ObjektIndex_finden);
> ~~~
Schau mal genau hin, wo du dein `return`{: .language-javascript}‐Statement notiert hast.
Wenn die Bedingung nicht wahr ist, gibt dein *Reducer*{: @en} implizit den Wert `undefined` zurück. Du willst aber immer den akkumulierten Wert zurückgeben, wobei in dem Fall, dass die Bedingung wahr ist, der Wert angepasst wird.
~~~JavaScript
var ObjektIndex_finden = arr.reduce(function(acc, curr){
if (curr.key2 === 21) {
acc = arr.indexOf(curr);
}
return acc;
}, 0);
~~~
Wenn du es so schreibst, wird dir der richtige Index ausgegeben, den du übrigens nicht mit `indexOf` ermitteln musst. Der Index wird als dritter Parameter an deine Rückruffunktion übergeben.
Viele Grüße,
Orlok
reduce() ist heute sehr eigensinnig!
bearbeitet von
Hallo
> Wenn ich der Methode einen Ausgangswert von 0 hinzufüge, ist das Resultat undefined
Aber nicht deswegen.
> ~~~JavaScript
> 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;
> }
> }, 0);
>
>
> console.log(ObjektIndex_finden);
> ~~~
Schau mal genau hin, wo du dein `return`{: .language-javascript}‐Statement notiert hast.
Wenn die Bedingung nicht wahr ist, gibt dein *Reducer*{: @en} implizit den Wert `undefined` zurück. Du willst aber immer den akkumulierten Wert zurückgeben, wobei in dem Fall, dass die Bedingung wahr ist, der Wert angepasst wird.
~~~JavaScript
var ObjektIndex_finden = arr.reduce(function(acc, curr){
if (curr.key2 === 21) {
acc = arr.indexOf(curr);
}
return acc;
}, 0);
~~~
Wenn du es so schreibst, wird dir der richtige Index ausgegeben.
Viele Grüße,
Orlok