JavaScript 数组连接

标签 javascript arrays push concatenation

我有这两个数组:

    let num1 = [[1]];
    const num2 = [2, [3]];

我连接这两个并创建新数组:

    const numbers = num1.concat(num2);
    console.log(numbers);
    // results in [[1], 2, [3]]

现在我将一个新值推送到 num1:

    num1[0].push(4);
    console.log(numbers);
    // results in [[1, 4], 2, [3]]

但是如果我写:

    num1[0] = [1, 4, 5];
    console.log(numbers);
    // results in [[1], 2, [3]]

为什么将 vale 重新分配给 num1不反射(reflect)数字数组的变化,但推送方法可以吗?

最佳答案

num1[0] 以一个对数组 [1]

的引用的值开始

numbers 复制该值,因此具有对同一数组的引用。

num1[0].push(4); 修改该数组(您有两个引用)

num1[0] = [1, 4, 5]; 修改 num1[0],替换对原始数组以及对全新数组的引用。 numbers 仍然包含对原始数组的引用。

关于JavaScript 数组连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60028634/

相关文章:

javascript - Cookie 脚本 - Uncaught ReferenceError : e is not defined

android - 解析安装未获取 DeviceToken

arrays - 使用 Tensorflow 中的索引对张量进行切片

Java int 内存使用情况

javascript - 检查数组中的唯一性,如果唯一则推送到数组

jquery推送制作多维数组

javascript - 使用动态参数绑定(bind)方法

javascript - AngularJS:如何在 routeChangeStart 事件中更改位置路径?

javascript - 根据 "alt"标签在输入时过滤图像

arrays - swift : protocol extension and arrays