我有一個包含陣列陣列的物件。我想洗掉該物件,因此它只是一個陣列陣列。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[] > 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]但我不知道如何使用物件。
謝謝
uj5u.com熱心網友回復:
你得到一個Promise回傳的原因是你的createGroupsis async(不需要是),并且async函式的回傳型別總是 a Promise。
最好的辦法就是把它改成不 async
const createGroups = (arr, numGroups) => { // rest of code
如果出于某種原因,你不想這樣做,你可以await在你的主要方法中這樣做。
const finalData = await createGroups(options, 228);
在我能想到的幾乎所有情況下,您應該使用的唯一時間async是:
- 你在方法
await的某個地方使用 - 您將函式作為回呼傳遞給另一個函式,該函式期望回呼回傳 a
Promise并且您不想Promise手動創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/422957.html
標籤:
