JavaScript:如何删除外部数组中的所有方括号? [复制]

Posted

技术标签:

【中文标题】JavaScript:如何删除外部数组中的所有方括号? [复制]【英文标题】:JavaScript: How to remove all the square brackets inside the outer array? [duplicate] 【发布时间】: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 岁。 您所追求的概念称为“扁平化”数组。 【参考方案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'关键字

以上是关于JavaScript:如何删除外部数组中的所有方括号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

python 获取类中除内置方法外的所有方法名

如何递归删除PowerShell中的所有空文件夹?

java怎么获取src目录下所有的包名,类名,方法名 以及通过一个类名获得该类下的所有方法名

如何一次性删除通用列表中的所有空元素?

如何在 javascript 数组中编写 html 的锚元素? [复制]

如何从 JavaScript 中的数组中删除元素?