假设我的嵌套数组的格式为[纬度,经度],我要输入的数组为[[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#map
与array#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)