将单元素数组的Javascript数组转换为1d数组

时间:2017-01-18 00:50:01

标签: javascript

我很难过这个。我有一个看起来像这样的数组:

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

(单个成员数组的数组)

该数组是由谷歌应用程序脚本提供给我的,因此我无法更改创建它的代码。

我试图获取某个值的索引。我不能使用indexOf,因为每个值都是一个成员的数组(我试过array.indexOf([3]),但这不起作用)。有没有一种简单的方法可以将它转换为像这样的1d数组:

[1,2,3,4,5]

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

5 个答案:

答案 0 :(得分:1)

只需使用map()

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

答案 1 :(得分: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);




答案 2 :(得分:0)

找到一个答案,这看起来很简单,所以我想我会分享它:

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

答案 3 :(得分:0)

您可以尝试使用map,它类似于循环,但更清晰:

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

或过滤以直接过滤所需的值:

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

答案 4 :(得分:0)

这是一个可以做到的单线:

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