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