为了账号安全,请及时绑定邮箱和手机立即绑定

合并/展平数组数组

合并/展平数组数组

合并/展平数组数组我有一个JavaScript数组,如:[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]我将如何将单独的内部数组合并为:["$6", "$12", "$25", ...]
查看完整描述

4 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

这是一个简短的函数,它使用一些较新的JavaScript数组方法来展平n维数组。


function flatten(arr) {

  return arr.reduce(function (flat, toFlatten) {

    return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);

  }, []);

}

用法:


flatten([[1, 2, 3], [4, 5]]); // [1, 2, 3, 4, 5]

flatten([[[1, [1.1]], 2, 3], [4, 5]]); // [1, 1.1, 2, 3, 4, 5]


查看完整回答
反对 回复 2019-05-25
?
翻阅古今

TA贡献1780条经验 获得超5个赞

有一个容易混淆的隐藏方法,它构造一个新的数组而不改变原始的数组:


var oldArray = [[1],[2,3],[4]];

var newArray = Array.prototype.concat.apply([], oldArray);

console.log(newArray); // [ 1, 2, 3, 4 ]


查看完整回答
反对 回复 2019-05-25
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

最好通过javascript reduce函数来完成。


var arrays = [["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"], ["$0"], ["$15"],["$3"], ["$75"], ["$5"], ["$100"], ["$7"], ["$3"], ["$75"], ["$5"]];


arrays = arrays.reduce(function(a, b){

     return a.concat(b);

}, []);

或者,使用ES2015:


arrays = arrays.reduce((a, b) => a.concat(b), []);

JS-小提琴

Mozilla文档


查看完整回答
反对 回复 2019-05-25
?
繁星coding

TA贡献1797条经验 获得超4个赞

您可以使用concat合并数组:


var arrays = [

  ["$6"],

  ["$12"],

  ["$25"],

  ["$25"],

  ["$18"],

  ["$22"],

  ["$10"]

];

var merged = [].concat.apply([], arrays);


console.log(merged);

使用apply方法concat只会将第二个参数作为数组,所以最后一行与此相同:

var merged2 = [].concat(["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]);

还有一种实验Array.prototype.flat()方法(尚未成为ECMAScript标准的一部分),您可以使用它来展平阵列,尽管它在Edge或Node.js中尚不可用

const arrays = [

      ["$6"],

      ["$12"],

      ["$25"],

      ["$25"],

      ["$18"],

      ["$22"],

      ["$10"]

    ];

const merge3 = arrays.flat(1); //The depth level specifying how deep a nested array structure should be flattened. Defaults to 1.

console.log(merge3);


查看完整回答
反对 回复 2019-05-25
  • 4 回答
  • 0 关注
  • 696 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信