In JavaScript, I have an array, which is
array = [true, false]
In some cases, I am trying to initialize this array
array.map(item => {
item = false
})
After running the above code, the array is not changed, it is still [true, false], so is .map not reliable sometimes?
ONE MORE QUESTION: After running my below code, the array is changed. Why does it work in this case?
let array = [{id:1, checked: false}, {id:2, checked:true}]
array.map(item => {
item.checked = true
})
array becomes [{id:1, checked: true}, {id:2, checked:true}]
4 Answers
JavaScript Array map() Method
*)creates a new array with the results of calling a function for every array element and it calls the provided function once for each element in an array, in order.
Note: map() Method does not execute the function for array elements without values and it does not change the original array.
Array map function is working fine. The map() method creates a new array with the results of calling a provided function on every element in this array. map() does not mutate the array on which it is called.
var array = [true, false]
var new_array = array.map(function(item) {
return false;
});
console.log(array)
console.log(new_array)
If your mapping is simple, you can do:
var array = [true, false];
array = array.map(_ => false);
console.log(array);
// [false, false]
.map() method is not mutable, check out its return value:
var arr2 = array.map(item => false)
console.log(arr2)
In functional programming, it's recommended that values do not change often, and JavaScript borrowed it. At least for .map() and .reduce() this is true. Make sure you know .map() well.