[英]how can i refactor this function using array destructuring?
大家好,
我已經構建了這個函數來將 Api 的獲取數據轉換為對象數組,但是 linter 要求我使用數組解構。
你能幫幫我嗎? 我只是一個初學者,所以請善待!
export const organiceData = async () => { const data = await getData(); const toArr = Object.entries(data); let newBook; const arr = []; toArr.forEach((book) => { newBook = book; newBook[1][0].id = book[0]; arr.push(newBook[1][0]); }); return arr; };
忽略該特定警告消息。 但是你仍然應該在你的代碼中修復一些東西:
map
而不是forEach
+ push
newBook
別名-分配不是創建副本,當然也不是對象的深層副本book
實際上不是 book 對象,它是一個表示鍵值對的元組(雙元素數組)。 book 對象是值 - 或者更確切地說,它似乎包含在值的第一個元素中,該元素本身就是一個數組。export async function organiceData() {
const data = await getData();
return Object.entries(data).map(pair => {
pair[1][0].id = pair[0];
return pair[1][0];
});
}
現在我們也可以使用解構來代替pair
變量,就像const key = pair[0], value = pair[1];
:
export async function organiceData() {
const data = await getData();
return Object.entries(data).map(([key, value]) => {
value[0].id = key;
return value[0];
});
}
如果要在對象上添加id
屬性之前創建對象的副本,以不改變它,您可以在對象文字中使用擴展語法。 我們還可以進一步對值使用解構(如const book = value[0];
):
export async function organiceData() {
const data = await getData();
return Object.entries(data).map(([key, [book]]) => {
return {...book, id: key};
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.