【问题标题】:Can not concat the arrays values [duplicate]无法连接数组值[重复]
【发布时间】:2020-05-19 07:24:17
【问题描述】:

我需要使用 JavaScript 合并多个数组值,但根据我的代码它不起作用。我在下面解释我的代码。

let result = [];

let arr1 = [1,2];
let arr2 = [3,4];
let arr3 = [5,6];

result.concat(arr1);
result.concat(arr2);
result.concat(arr3);


console.log(result);

在这里,我期望输出为[1,2,3,4,5,6],但根据我的代码,它即将出现[]

【问题讨论】:

  • concat 返回一个新数组,不会改变当前数组。
  • 请在提问前做一些basic research。这个问题已经被问过很多次了。
  • 如果你使用的是 es6,传播语法真的很容易。 const result = [ ...arr1, ...arr2, ...arr3 ]
  • @JoelHager 或result.push(...arr1); result.push(...arr2); result.push(...arr3);
  • 他们做同样的事情,但都使用传播,这种方式不是很 D.R.Y。伊莫

标签: javascript arrays


【解决方案1】:

Concat 是一个纯运算符。这意味着它会生成一个新数组,而不是更改调用它的数组。

let result = [];

let arr1 = [1,2];
let arr2 = [3,4];
let arr3 = [5,6];

result.concat(arr1); // returns an array
result.concat(arr2); // returns an array
result.concat(arr3); // returns an array

如果你想改变一个结果数组,你可以这样做:

let result = [];

let arr1 = [1,2];
let arr2 = [3,4];
let arr3 = [5,6];

result = result.concat(arr1);
result = result.concat(arr2);
result = result.concat(arr3);

let result = [];

let arr1 = [1,2];
let arr2 = [3,4];
let arr3 = [5,6];

result.push(...arr1);
result.push(...arr2);
result.push(...arr3);

push 是一个不纯的运算符,因此它正在更改“结果”数组。我在这里使用解构来将所有 arr 元素作为单独的参数推送。

【讨论】:

    【解决方案2】:

    按照@VLAZ 的建议,您应该存储返回的数组:

    var a = [1, 2, 3];
    var b = [4, 5, 6];
    var c = a.concat(b);
    
    console.log(c); // c is [1, 2, 3, 4, 5, 6]
    

    【讨论】:

      猜你喜欢
      • 2014-12-27
      • 2022-01-05
      • 2022-10-14
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2016-07-30
      • 2018-10-22
      • 2017-10-08
      相关资源
      最近更新 更多