【问题标题】:Why does array.map() function not change the array [duplicate]为什么array.map()函数不会改变数组[重复]
【发布时间】:2020-10-02 02:48:14
【问题描述】:

我想为数组的每个元素添加一个。我试过了:

myArray=[1,2,3]
myArray.map(a=>a+=1) // tried a++ and a=a+1 too
console.log(myArray) // return [ 1 , 2 , 3 ]

没有用... 所以我这样做了:

myArray=[1,2,3]
mySecondArray=[]
myArray.map(a=>mySecondArray.push(a+1))
console.log(mySecondArray) // return [ 2, 3, 4 ]

所以它起作用了,但我不明白为什么第一个没有。你能解释一下为什么吗?

【问题讨论】:

  • Array.map 返回映射数组。如果要将数组设置为其映射版本,可以执行 arr = arr.map(...)
  • 因为 map 不会改变原来的数组。它返回另一个。
  • 试试myArray = myArray.map(a=>a+=1)。 map 返回一个新数组。
  • 你可以使用myArray.forEach((_, i) => myArray[i] += 1) 来改变数组,但我不推荐它。而是用数组的映射版本替换当前变量,如下面的答案所示。

标签: javascript arrays


【解决方案1】:

JavaScript 中的map() 方法通过对父数组中存在的每个元素调用特定函数来创建数组。这是一种非变异方法,这就是您的第一种方法不起作用的原因。

let myArray = [1,2,3];
myArray = myArray.map(x => x + 1);
console.log(myArray);

【讨论】:

    【解决方案2】:

    你需要把它等同起来:

    myArray = myArray.map(a => a+1);
    console.log(myArray)
    

    输出 --- > [2, 3, 4]

    【讨论】:

    • a => a + 1 就够了
    • 是的,我的错,已经改了
    【解决方案3】:

    目前,您没有存储实例。

    将实例存储在某个数组中,

    let myArray=[1,2,3]
    myArray = myArray.map(a=>a+1);
    console.log(myArray);
    

    【讨论】:

    • 没有理由使用+= 它只会引入混乱。我建议将其更改为+
    猜你喜欢
    • 2022-09-25
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    相关资源
    最近更新 更多