2017-01-18 91 views
0

我对这个难以置信。我有一个数组,看起来像这样:将单元阵列的JavaScript数组转换为1d数组

[[1],[2],[3],[4],[5]]

(单一构件数组的数组)

该数组是由谷歌应用脚​​本给我的,所以我不能改变创建它的代码。

我想获得某个值的索引。我不能使用indexOf,因为每个值都是单个成员的数组(我尝试过array.indexOf([3]),但那不起作用)。有没有一种简单的方法将其转换为一维数组是这样的:

[1,2,3,4,5]

我总是可以遍历原始数组的成员,并将其复制到一个新的阵列,但似乎应该有一个更好的方法。

+1

的可能的复制[合并/拼合在JavaScript中的数组数组?](http://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays-in-javascript) – OJay

回答

0

你可以尝试使用地图,类似于循环,但更清洁:

arr.map(function(val){return val[0];}); 

或过滤器直接过滤你所需要的值:

var num = 1; 
arr.filter(function(val){return val[0] == num;}); 
1

只要使用地图()

var newArr = data.map(function(subArr){ 
    return subArr[0]; 
}) 
0

找到一个答案,这似乎是很简单的,所以我想我会分享:

var a = [[1], [2], [3], [4], [5], [6], [7]]; 
 
    var b = a.map(function(value, index){return value[0];});

0

这里是一个班轮,将做到这一点:

array.toString().split(',').map(Number);

1

您可以使用reduce()

var a = [[1],[2],[3],[4],[5]]; 
 
var b = a.reduce(function(prev, item){ return prev.concat(item); }, []); 
 
console.log(b);

或者concat

var a = [[1],[2],[3],[4],[5]]; 
 
var b = Array.prototype.concat.apply([], a); 
 
console.log(b);

或者map

var a = [[1],[2],[3],[4],[5]]; 
 
var b = a.map(function(item){ return item[0]; }); 
 
console.log(b);