如何简化ES6中的嵌套循环?

时间:2018-12-20 07:15:57

标签: angular typescript ecmascript-6

有什么方法可以简化此嵌套循环吗?我一直在将值推入数组

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);
      }
    }
  }

3 个答案:

答案 0 :(得分:2)

使用回调函数的另一种解决方案:

legs.forEach(leg => {
   leg.steps.forEach(step => {
      step.path.forEach(p => {
         points.push({lng: p.lng(), lat: p.lat()})
      });
   });
});

答案 1 :(得分:1)

您可以使用mapreduce以及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); });