【发布时间】:2022-01-29 04:25:20
【问题描述】:
我有一个包含数组数组的对象。我想删除该对象,因此它只是一个数组数组。 JavaScript中有没有办法做到这一点,还是我不走运?我正在使用 Puppeteer 抓取页面并在映射一组元素后返回所有文本。我已经编写了一个函数来将它分离到我想要的数组中,但是 Puppeteer 将它作为我不想要的对象返回。 它返回的对象是这样的
更新
原来它返回的是一个对象的承诺。 所以我登录到控制台时得到的结果是
Promise {
[ [], [], []... ]
}
所以我想我的新问题是如何只获得承诺的结果。
data = {
[
[], [], []...
]
};
我希望它看起来像
data = [
[], [], []...
]
木偶功能
const getText = async (data) => {
const browser = await puppeteer.launch({ headless: true })
const page = await browser.newPage()
await page.goto(data.URL, { waitUntil: 'networkidle2' });
const options = await page.$$eval('table[class="data-table"] > tbody > tr > td', (options) =>
options.map((option) => option.textContent)
);
await browser.close();
const finalData = createGroups(options, 228);
// the puppeteer function returns each texContent as a single array, meaning the page
// I'm scraping returns 1140 arrays, I want each array in my final product to contain 5
// elements so I did 1140/5, that's how I got 228
console.log(finalData);
}
创建组函数
const createGroups = async (arr, numGroups) => {
const perGroup = Math.ceil(arr.length / numGroups);
const finalArr = new Array(numGroups)
.fill('')
.map((_, i) => arr.slice(i * perGroup, (i + 1) * perGroup));
return finalArr;
}
或者有没有一种方法可以提取包含较小数组的大数组并将其放入它自己的变量中?使用数组的方法是LargeArray[0],但我不知道如何使用对象。
谢谢
【问题讨论】:
-
结构
{ [...] }是不可能的,你确定它不是这样的:{ someKey: [...] }因为一个对象需要有键 -
我又看了一遍,看起来它正在返回一个承诺,当我将它记录到控制台时,我得到
Promise { [ [ 'Afghanistan', '0', '312', '+312', '' ],... -
你可以使用 await 或者你得到的任何结果 apply .then() 示例:yourResult.then((data) => {这里的数据将是数组数组})
标签: javascript node.js arrays puppeteer