Как я могу упростить этот вложенный цикл в ES6? - PullRequest
0 голосов
/ 20 декабря 2018

Есть ли способ упростить этот вложенный цикл?Я выдвигаю значения в массиве

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 голосов
/ 20 декабря 2018

попробуйте

var finalResult = Array2.filter(function(arr){ return Array1.includes(arr.value); });
0 голосов
/ 20 декабря 2018

Другое решение, использующее функции обратного вызова:

legs.forEach(leg => {
   leg.steps.forEach(step => {
      step.path.forEach(p => {
         points.push({lng: p.lng(), lat: p.lat()})
      });
   });
});
0 голосов
/ 20 декабря 2018

Вы можете уменьшить это, используя 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()}))];
    },[])];
  }, [])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...