Как оптимизировать вложенный цикл в JavaScript? - PullRequest
0 голосов
/ 06 августа 2020

Я новичок в JavaScript ES6. Я хочу преобразовать вложенный цикл в одиночный цикл в моем коде. У меня есть несколько примеров ниже, и кто-нибудь может мне помочь, как сделать его одиночным l oop. Возможно ли это для моего кода ниже. Насколько я знаю, в JavaScript вложенный l oop не очень хорош для производительности.

Нет 1:

  getCountryNames = (cList, countryCodeList) => {
    const list = [];
    countryCodeList.forEach(code => {
      cList.forEach(cjson => {
        if (cjson.code === code) {
          list.push(cjson.label);
        }
      });
    });
    return list;
  }

Нет 2:

  getITestList = () => {
    const msgArr = this.state.bufferMsgList;
    const arr = [];
    msgArr.forEach(msg => {
      let flag = true;
      if (arr.length > 0) {
        arr.forEach(data => {
          if (data.id === msg.group_entity_id) {
            flag = false;
          }
        });
      }
      if (flag) {
        const json = {
          id: msg.group_entity_id,
          code: msg.group_entity_code,
        };
        arr.push(json);
      }
    });
    return arr;
  }

Нет 3:

  getMsgWithTest = (list) => {
    const responseArr = [];
    if (list.length > 0) {
      list.forEach(payload => {
        const messageList = payload.messages;
        if (messageList) {
          messageList.forEach(msg => {
            const mjson = Object.assign({}, msg);
            mjson.group_entity_code = payload.group_entity_code;
            mjson.group_entity_id = payload.group_entity_id;
            responseArr.push(mjson);
          });
        }
      });
    }
    return responseArr;
  }

Нет 4:

this.state.defaultMessageList.forEach(payload => {
  if (payload.messages) {
    payload.messages.forEach(msg => {
      filteredRegionBasedOnMsg.push(msg.regions);
      filteredCountryBasedOnMsg.push(msg.country_codes);
    });
  }
});

Нет 5:

  this.state.defaultMessageList.forEach(payload => {
    if (payload.messages) {
      payload.messages.forEach(msg => {
        if (msg.status === 'ACTIVE') {
          filteredCountryBasedOnMsg.push(msg.country_codes);
        }
      });
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...