我有一个JavaScript数组,如:

[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]

如何将单独的内部数组合并为一个,例如:

["$6", "$12", "$25", ...]

当前回答

如何使用JavaScript 1.8的reduce(callback[,initialValue])方法

list.reduce((p,n) => p.concat(n),[]);

能胜任这项工作。

其他回答

var arrays=[[“$6”],[“$12”],“$25”],【“$25“],【”$18“】,【”$22“】,“$10”】,【“$15”】,“$3”】,[”$3“],[”$75“],“$5”]、[”$100“]、[“$7”]、【”$3“]、【“$75”】、【”$5“]];var merged=[].contat.apply([],数组);警报(合并);

看起来这看起来像是一份招聘工作!

处理多层嵌套处理空数组和非数组参数没有突变不依赖现代浏览器功能

代码:

var flatten = function(toFlatten) {
  var isArray = Object.prototype.toString.call(toFlatten) === '[object Array]';

  if (isArray && toFlatten.length > 0) {
    var head = toFlatten[0];
    var tail = toFlatten.slice(1);

    return flatten(head).concat(flatten(tail));
  } else {
    return [].concat(toFlatten);
  }
};

用法:

flatten([1,[2,3],4,[[5,6],7]]);
// Result: [1, 2, 3, 4, 5, 6, 7] 

有一个令人困惑的隐藏方法,它在不改变原始数组的情况下构造一个新数组:

var oldArray=[[1],[2,3],[4];var newArray=Array.prototype.contat.apply([],oldArray);console.log(newArray);//[ 1, 2, 3, 4 ]

我只是尝试在不使用任何内置函数的情况下解决这个问题。

var arr = [1, 3, 4, 65, [3, 5, 6, 9, [354, 5, 43, 54, 54, 6, [232, 323, 323]]]];
var result = [];

function getSingleArray(inArr) {
  for (var i = 0; i < inArr.length; i++) {
    if (typeof inArr[i] == "object") {
      getSingleArray(inArr[i]); // Calling Recursively
    } else {
      result.push(inArr[i]);
    }
  }
}

getSingleArray(arr);
console.log(result); // [1, 3, 4, 65, 3, 5, 6, 9, 354, 5, 43, 54, 54, 6, 232, 323, 323]

如何使用JavaScript 1.8的reduce(callback[,initialValue])方法

list.reduce((p,n) => p.concat(n),[]);

能胜任这项工作。