Javascript 未解析通过函数传递过来的数组

Javascript not parsing array passed over through function

我有一个使用 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;
}

parseData 中的第一个 console.log 执行 return 56 个项目,但是当它到达 tData.forEach 时它已经完全丢失了数据,并且解析 return当它 return 为 coll_array 时,它是一个空数组。

如果有人有什么想法?

到现在为止,我会认为你的数据在数组中是正确的。 前任。 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
},[])

以上代码将return

arr = [ [1,..,7], [8,...14], ....]

我们已经解决了这个问题。 事实证明,赛普拉斯中的一切都是一个承诺,所以第一个函数需要有一个 .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);
      });  
}