Der folgende Codeausschnitt zeigt, dass Arrays wie Referenzen wirkenWelche Regeln gelten für eine Array-Referenz?
let arr = [1,2,3]
let arr2 = arr
arr[0] = 5
console.log(arr2) // [5, 2, 3]
console.log(arr) // [5, 2, 3]
aber wenn ich eine Map-Funktion verwenden, um ein Array zu bearbeiten:
let arr = [1,2,3]
let arr2 = arr
arr = arr.map(x => x * 2)
console.log(arr2) //[ 1, 2, 3 ]
console.log(arr) //[ 2, 4 ,6 ]
Es ist nicht als Referenz dienen. Ich erwarte, dass es so verhalten:
let arr = [1,2,3]
let arr2 = arr
function doubleNumbers(numbers){
for (let i = 0; i < numbers.length; i++) {
numbers[i] = numbers[i] * 2
}
return numbers
}
arr = doubleNumbers(arr)
console.log(arr2) //[ 2, 4 ,6 ]
console.log(arr) //[ 2, 4 ,6 ]
Haben die .map
.filter
.reduce
.forEach
Funktionen eine flache Kopie des Arrays zu erstellen, wenn mit ihr arbeitet, dass die Rückkehr?
[aus dem MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map): Die Methode map() erstellt ein neues Array mit den Ergebnissen des Aufrufs einer bereitgestellten Funktion für jedes Element im aufrufenden Array. –
Lesen Sie die Dokumentation – Weedoze