Javascript, не разбирающий массив, передается через функцию - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть массив, который передается через функцию с использованием javascript, я не вижу ничего плохого в коде, но он не проходит через первый массив правильно, поэтому он может быть проанализирован.

Идея состоит в том, что первый массив состоит из 56 элементов, затем он вызывает функцию parseData, которая должна разбить этот массив на куски по 7.

Вот две функции:

static async validateRowValues() {
    let data = [];
    await cy.get('tr > td > div.dlCell')
      .each(function (row) {
          let d = row.get(0).innerText;
          data.push(d);
      });
    console.log(data);

    let response = await this.parseData(data);

    console.log({response});
}

static async parseData(tData) {
    console.log(tData);
    let array = [];
    let coll_array = [];
    debugger;
    await tData.forEach(async (v, index) => {
        await array.push(v);
        if (index % 6 === 0 && index !== 0) {
            await coll_array.push(array);
            array = [];
        }
    });
    return coll_array;
}

Первый файл console.log в parseData возвращает 56 элементов, однако к моменту достижения tData.forEach он полностью теряет свои данные, и при возврате coll_array синтаксический анализ возвращает пустой массив.

Если у кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Мы решили это.Оказывается, все в Cypress обещает, поэтому первая функция должна была иметь .then

 static async validateRowValues() {
    let data = [];
    await cy.get('tr > td > div.dlCell')
      .each(function (row) {
          let d = row.get(0).innerText;
          data.push(d);
      }).then(() => {
        this.parseData(data);
      });  
}
0 голосов
/ 03 декабря 2018

На данный момент я буду считать, что вы получаете свои данные в виде массива.ех.arr = [1,2,3, ..... 58]

Используйте приведенный ниже код для разделения на 7

arr = arr.reduce((acc,data,index)=>{
  if(index==0 || index%7==0) acc.push([])
  acc[acc.length-1].push(data)
  return acc
},[])

Приведенный выше код вернет

arr = [ [1,..,7], [8,...14], ....]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...