如果我想将项目减少到单个数组列表,那么下面是我的数组。
var input=[
[
2
],
[
3,
13
],
[
4,
14
],
[
5,
15,
25,
35
]
]
var output=[
2,
3,
13,
4,
14,
5,
15,
25,
35
]
我的代码:
function reduceArray(item){
for(var i=0;i<item.length;i++){
return i;
}
}
var result=result.map((item)=>{
if(item.length>0){
return reduceArray(item);
}else{
return item;
}
})
产生相同的结果。任何人都可以找出我做错的地方或任何其他方法来实现这一点。谢谢
答案 0 :(得分:3)
input.reduce(function(a, x) { return a.concat(x); });
// => [2, 3, 13, 4, 14, 5, 15, 25, 35]
reduce
将累加器设置为第一个元素(或者提供的起始值),然后使用累加器和每个连续元素调用该函数。我们提供的功能是连接。如果我们说input
是[a, b, c]
,则上述命令将等同于a.concat(b).concat(c)
。 [concat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat)
通过将两个或多个数组压缩在一起来生成一个新数组。
编辑:实际上,还有另一种可能的答案:
Array.prototype.concat.apply(input[0], array.slice(1));
// => [2, 3, 13, 4, 14, 5, 15, 25, 35]
这会直接调用带有多个参数的concat
;如果input
再次为[a, b, c]
,则相当于a.concat(b, c)
。 apply
使用给定的接收者和参数调用函数; slice
将只给出数组的一部分,在这种情况下,所有内容都从第一个元素开始(我们需要切断它,因为它需要成为concat
调用的接收者)。
答案 1 :(得分:2)
一个班轮就是
input = [[2],[3,13],[4,14],[5,15,25,35]];
[].concat.apply([],input);
答案 2 :(得分:1)
_.flattenDeep([1, [2, [3, [4]], 5]]);
// → [1, 2, 3, 4, 5]
答案 3 :(得分:1)
用户concat
。查看此信息以获取更多信息http://www.w3schools.com/jsref/jsref_concat_array.asp
var input=[[2],[3,13],[4,14],[5,15,25,35]];
var output=[];
for(var i = 0; i < input.length; i++)
{
output = output.concat(input[i]);
}
console.log(output);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 4 :(得分:1)
使用concat
是完美的方式
concat()方法用于连接两个或多个数组。 此方法不会更改现有数组,但会返回一个新数组,其中包含已连接数组的值。
var newArr = [];
for(var i = 0; i < input.length; i++)
{
newArr = newArr.concat(input[i]);
}
console.log(newArr);