Quelqu'un peut-il m'aider à comprendre ce qui se passe ici?
let firstArray = [];
firstArray.Push(1);
firstArray.Push(1);
firstArray.Push(1);
console.log("firstArray", firstArray); // result [ 1, 1, 1 ] - as expected.
let secondArray = [1, 2, 3].reduce((acc, item) => {
console.log("acc", acc);
console.log("typeof acc", typeof acc);
// on first passing, the accumulator (acc) is Array[] == object.
// on the second passing the acc == number.
// but why?
/// i expect to get [1,1,1] as my secondArray.
return acc.Push(1);
}, []);
console.log("secondArray", secondArray);
le programme plante avec "acc.Push n'est pas une fonction"
Et inspecter le premier accumulator
enregistré montre que nous avons la méthode Push - c'est une vraie fonction:
La valeur de retour de Array#Push
est la nouvelle longueur du tableau après le Push. Cela signifie que dans la deuxième itération acc
est un nombre, qui n'a pas la méthode Push.
La solution est simple - séparez les instructions Push et return:
const secondArray = [1, 2, 3].reduce((acc, item) => {
acc.Push(1);
return acc;
}, []);
console.log(secondArray);