2017-01-18 134 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);