我有一个JavaScript数组,如:
[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]
如何将单独的内部数组合并为一个,例如:
["$6", "$12", "$25", ...]
我有一个JavaScript数组,如:
[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]
如何将单独的内部数组合并为一个,例如:
["$6", "$12", "$25", ...]
当前回答
您可以继续使用Array.flat()方法来实现这一点,即使数组嵌套得更多。
[1,2,3,[2]].flat()
相当于
[1,2,3,[2]].flat(1)
所以当你的筑巢增加时,你可以继续增加数量。
eg:
[1,[2,[3,[4]]]].flat(3) // [1, 2, 3, 4]
如果您不确定嵌套的级别,可以只传递Infinity作为参数
[1,2,3,[2,[3,[3,[34],43],[34]]]].flat(Infinity) //[1, 2, 3, 2, 3, 3, 34, 43, 34]
其他回答
使用那里的代码。
我会写:
myArray.enumerable().selectMany(function(x) { return x; }).array()
如果您的数组仅由整数或字符串组成,则可以使用这种肮脏的方法:
var arr = [345,2,[34],2,[524,[5456]],[5456]];
var flat = arr.toString().split(',');
Works,在FF、IE和Chrome中还没有测试其他浏览器。
下面是现代浏览器的另一个深层次扁平化:
function flatten(xs) {
xs = Array.prototype.concat.apply([], xs);
return xs.some(Array.isArray) ? flatten(xs) : xs;
};
另一种方法是使用jQuery$.map()函数。从jQuery文档:
该函数可以返回一个值数组,该数组将被展平为完整数组。
var source = [["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]];
var target = $.map(source, function(value) { return value; }); // ["$6", "$12", "$25", "$25", "$18", "$22", "$10"]
可以将Array.flat()与Infinity一起用于任何深度的嵌套数组。
var arr=[[1,2,3,4],[1,2,[1,2,3]],[1,2,4,5,[1,3,4,[12,3,4,[12,3,4]]],[[1,2,3-4],[1,3,[1,2],[1,2,3,5],[1,3,4,[1,2,3,4]]];let flatten=arr.flat(无限)console.log(展平)
在此处检查浏览器兼容性