有什么方法可以简化此嵌套循环吗?我一直在将值推入数组
for (let i=0;i<legs.length;i++) {
let steps = legs[i].steps;
for (let j=0;j<steps.length;j++) {
let nextSegment = steps[j].path;
for (let k=0;k<nextSegment.length;k++) {
const latLang: ILatLng = {
lng: nextSegment[k].lng(),
lat: nextSegment[k].lat()
};
points.push(latLang);
}
}
}
答案 0 :(得分:2)
使用回调函数的另一种解决方案:
legs.forEach(leg => {
leg.steps.forEach(step => {
step.path.forEach(p => {
points.push({lng: p.lng(), lat: p.lat()})
});
});
});
答案 1 :(得分:1)
您可以使用map
和reduce
以及ES6中的一些散布运算符来减少这种情况
const points = legs.reduce((acc1, l) => {
return [...acc1, ...l.steps.reduce((acc2, s) => {
return [...acc2, ...s.path.map(p => ({lng: p.lng(), lat: p.lat()}))];
},[])];
}, [])
答案 2 :(得分:0)
尝试
var finalResult = Array2.filter(function(arr){ return Array1.includes(arr.value); });