包含数组数组的对象,如何删除对象使其只是数组数组
Object that contains an array of arrays, how to remove object so it's only an array of arrays
我有一个包含数组数组的对象。我想删除该对象,因此它只是一个数组数组。 JavaScript 中有没有办法做到这一点,还是我运气不好?我正在使用 Puppeteer 在通过一组元素映射后抓取页面和 return 所有文本。我已经编写了一个函数来将它分离到我想要的数组中,但是 Puppeteer return 将它作为我不想要的对象。
它 return 的对象看起来像这样
更新
原来它是 returning 一个 promise,它是一个对象。
所以当我登录到控制台时得到的结果是
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);
}
createGroups 函数
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]
但我不知道如何使用对象。
谢谢
您获得 Promise
returned 的原因是您的 createGroups
是 async
(不需要),而 return async
函数的类型始终是 Promise
.
最好的方法就是将其更改为不是 async
const createGroups = (arr, numGroups) => { // rest of code
如果出于某种原因,您不想这样做,您可以 await
在您的 main 方法中。
const finalData = await createGroups(options, 228);
几乎在我能想到的所有情况下,你应该使用 async
的唯一时间是:
- 您正在方法中的某处使用
await
- 您将函数作为回调传递给另一个函数,该函数期望回调到 return 一个
Promise
而您不想手动创建 Promise
我有一个包含数组数组的对象。我想删除该对象,因此它只是一个数组数组。 JavaScript 中有没有办法做到这一点,还是我运气不好?我正在使用 Puppeteer 在通过一组元素映射后抓取页面和 return 所有文本。我已经编写了一个函数来将它分离到我想要的数组中,但是 Puppeteer return 将它作为我不想要的对象。 它 return 的对象看起来像这样
更新
原来它是 returning 一个 promise,它是一个对象。 所以当我登录到控制台时得到的结果是
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);
}
createGroups 函数
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]
但我不知道如何使用对象。
谢谢
您获得 Promise
returned 的原因是您的 createGroups
是 async
(不需要),而 return async
函数的类型始终是 Promise
.
最好的方法就是将其更改为不是 async
const createGroups = (arr, numGroups) => { // rest of code
如果出于某种原因,您不想这样做,您可以 await
在您的 main 方法中。
const finalData = await createGroups(options, 228);
几乎在我能想到的所有情况下,你应该使用 async
的唯一时间是:
- 您正在方法中的某处使用
await
- 您将函数作为回调传递给另一个函数,该函数期望回调到 return 一个
Promise
而您不想手动创建Promise