【问题标题】:JavaScript: How to remove all the square brackets inside the outer array? [duplicate]JavaScript:如何删除外部数组中的所有方括号? [复制]
【发布时间】:2016-03-17 13:07:58
【问题描述】:
var arrayX = [ ["fire", "lightning"], [3, "ice"], [85], ["wind", "earth", 0] ];

在上面的示例中,arrayX 由四个元素组成,每个元素也是一个数组。就目前而言,arrayX.length 等于 4

我想知道是否有可能把里面的四对方括号都去掉,只留下最外面的括号,这样计算机现在可以计算arrayX中所有单个元素的总数。我的意思是,像这样:

var arrayX = ["fire", "lightning", 3, "ice", 85, "wind", "earth", 0];

现在,arrayX.length 返回8,这就是我想要得到的数字。我几天前才开始学习编程,所以我不知道该怎么做。提前谢谢你。

【问题讨论】:

  • 创建一个数组并将所有元素添加到其中,通过使用for循环遍历原始数组,或使用arrayX.join().split(',')但这里所有值都转换为字符串,但length会根据问题,为 8 岁。
  • 您所追求的概念称为“扁平化”数组。

标签: javascript arrays


【解决方案1】:

使用Array.prototype.reduce():

var flattened = [ ["fire", "lightning"], [3, "ice"], [85], ["wind", "earth", 0] ].reduce(function(a, b) {
  return a.concat(b);
}, []);

docs here

【讨论】:

    【解决方案2】:

    无需循环

    arrayX = [].concat.apply([], arrayX);
    

    【讨论】:

    • 只有在数组没有嵌套的情况下才有效。
    • @NinaScholz 适用于 OP 案例。我喜欢人们添加在 OP 案例中无关紧要的新要求。
    【解决方案3】:

    我自己是 concat 方法的粉丝

    function concatArray() {
      var arrayX = [
        ["fire", "lightning"],
        [3, "ice"],
        [85],
        ["wind", "earth", 0]
      ];
      arrayX = [].concat.apply([], arrayX);
      console.log(arrayX.length);
    }
    
    concatArray();

    【讨论】:

    • 我的回答错了吗?
    • 你看起来很开心,在我的经验中没有人喜欢这个,避免'fan','excelent','super'关键字
    猜你喜欢
    • 2013-04-11
    • 2023-03-16
    • 2013-09-18
    • 2021-12-27
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2014-01-28
    相关资源
    最近更新 更多