我正在處理這樣的物件:-
{
0:
buyAmount: 16.664328043964396
buyAmountInUsd: 16.685266204095775
date: {date: '2021-12-07'}
sellAmount: {USD: 500, INR: 35000}
1:
buyAmount: 1004.7015442959262
buyAmountInUsd: 1005.9639175379324
date: {date: '2021-12-07'}
sellAmount: {USD: 1000, INR: 79000}
......
我正在嘗試使用useState帶有這些資料的鉤子創建一個新陣列,但我面臨的問題是如何過濾資料并使用相同的資料創建一個幾乎相似的陣列。
例如:-
0: [amount: 500, date: '2021-12-07'],
1: [amount: 1000, date: '2021-12-07']
我面臨的問題是我不知道如何獲取資料的方法amount = sellAmount.USD和date = date.date
我想嘗試for...of但我不認為它會是一個很好的打擊。
uj5u.com熱心網友回復:
你可以這樣做 Array.map
const arr = [{
buyAmount: 16.664328043964396,
buyAmountInUsd: 16.685266204095775,
date: {date: '2021-12-07'},
sellAmount: {USD: 500, INR: 35000}
},{
buyAmount: 1004.7015442959262,
buyAmountInUsd: 1005.9639175379324,
date: {date: '2021-12-07'},
sellAmount: {USD: 1000, INR: 79000}
}]
console.log(
arr.map(initialValue => {
return {
amount: initialValue.sellAmount.USD,
date: initialValue.date.date
}
})
)
uj5u.com熱心網友回復:
更好的主意是擁有一個物件陣列而不是陣列元素陣列
let result = yourArray.map(each => ({ amount: each.sellAmount.USD, date: each.date.date }))
uj5u.com熱心網友回復:
這與 ReactJS 無關 - 只是本機 Javascript 物件處理。
如果您的原始資料具有物件的形狀,您可以將其轉換為陣列,如下所示:
const objData = { 0: {...}, 1: {...} };
const arrData = Object.entries(objData); // [[0, {...}], [1, {...}]];
從那里,您可以使用本機陣列方法過濾/映射/排序您的陣列:
const reshapedArray = arrData.map(([key, value]) => {
return {
amount: value.sellAmount.USD,
date: value.date.date,
};
});
然后排序:
const sortedArray = reshapedArray.sort((prev, next) => {
return prev.amount - next.amount; // sort by amount ascending
});
您可以鏈接這些陣列函式并稍微縮短語法:
Object.entries(objData)
.map(([_, { sellAmount, date: { date } }]) => ({ amount: sellAmount.USD, date }))
.sort((a, b) => a.amount - b.amount);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/375414.html
標籤:javascript 数组 反应
