我很难过这个。我有一个看起来像这样的数组:
[[1],[2],[3],[4],[5]]
(单个成员数组的数组)
该数组是由谷歌应用程序脚本提供给我的,因此我无法更改创建它的代码。
我试图获取某个值的索引。我不能使用indexOf,因为每个值都是一个成员的数组(我试过array.indexOf([3]),但这不起作用)。有没有一种简单的方法可以将它转换为像这样的1d数组:
[1,2,3,4,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);