如何获取数组中子数组的第一个值



假设我的嵌套数组的格式为[纬度,经度],我要输入的数组为[[10,20],[30,40],[50,60]]。

我想返回一个只有纬度的数组,所以[10,30,50]现在我该如何在JavaScript中做到这一点?

您可以像这样使用.map()方法:

var array = [[10,20],[30,40],[50,60]];
var result = array.map(item => item[0]);
console.log(result)

获得相同结果的另一种方法;

const arr = [[10,20],[30,40],[50,60]];
const latitudes=[];
for (let i = 0; i < arr.length; i++){
const arr1 = arr[i];
latitudes.push(arr1[0]); 
}

支持:Chrome(是(,Firefox(是(、IE5.5+、O(是(和Safari(是(

var arr = [[10,20],[30,40],[50,60]] ;
var i = 0 , res = [] ;
while (i < arr.length ) {
res.push(arr[i][0]) ;
i++ ;
}
console.log (res) ;

使用ES6,您还可以使用析构函数&将其映射到以下位置:

var arr = [[10,20],[30,40],[50,60]];
var result = arr.map(([a]) => a)
console.log(result)

您可以将array#maparray#destructuring一起使用,从单个数组中获取第一个索引项。

var locations = [[10,20],[30,40],[50,60]],
latitudes = locations.map(([latitude]) => latitude);
console.log(latitudes)

您也可以通过reduce来实现。

let obj = [[10,20],[30,40],[50,60]];
const newArr = obj.reduce((nArr, lat) => {
nArr.push(lat[0]);
return nArr;
}, []);
console.log(newArr);

您有很多循环机制可供选择。最简单的是map,因为您期望得到一个数组。使用析构函数赋值简化了命名,但还有更多的魔力,而且ES6很重,所以如果跨浏览器兼容性是一个问题,请记住这一点。

let log = console.log
let arr = [[10,20],[30,40],[50,60]]
// Destructuring Assignment
let ex1 = arr.map(([lat,long])=>lat) 
log('ex1:',ex1)
// Non-Destructuring
let ex2 = arr.map(set=>set[0])
log('ex2:',ex2)
// Reduce
let ex3 = arr.reduce((ar,val)=>(ar.push(val[0]),ar),[])
log('ex3:',ex3)

当然,你可以发挥创意,将数组变平,并使用数学来挑选你的值:

let arr = [[10,20],[30,40],[50,60]]
let ex4 = arr.flat().filter((v,i)=>!(i%2))
console.log('ex4:',ex4)

每个使用相同:

let latLongs = [[10, 20], [30, 40], [50, 60]]
let lats = []
latLongs.forEach(
(latLong) => {
lats.push(latLong[0])
}
)
console.log(lats)

相关内容

最新更新