我想將每個價格與以前的值相加作為一個新陣列,這是我的物件和我的最終陣列,除了我寫的減速器
data=[{price: 2, volume: 123}
{price: 3, volume: 123}
{price: 4, volume: 254}
{price: 1, volume: 444}
{price: 5, volume: 555}]
finaldata=[{price: 2, volume: 555}
1: {price: 5, volume: 777}
2: {price: 9, volume: 5000}
3: {price: 10, volume: 8000}
4: {price: 15, volume: 4000}]
const test = buy.map((items, index) =>
items.reduce((prev, curr, currIndex) => {
return index >= currIndex ? { volume: (prev?.volume || 0) curr?.volume } : 0;
}, 0)
);
cons
uj5u.com熱心網友回復:
最好將reduce每個價格與以前的值相加作為一個新陣列,而不是map
const data=[{price: 2, volume: 123},
{price: 3, volume: 123},
{price: 4, volume: 254},
{price: 1, volume: 444},
{price: 5, volume: 555}]
const result =
data.reduce((acc, curr, currIndex) => {
const lastItem = acc[acc.length - 1];
acc.push({ ...curr, price: lastItem ? lastItem.price curr.price : curr.price })
return acc;
}, [])
console.log(result)
uj5u.com熱心網友回復:
我會這樣使用,首先我將第一個資料中的所有資料與 finaldata 連接,然后我將其分組,如果相同,它將增加音量
const data = [
{price: 2, volume: 123},
{price: 3, volume: 123},
{price: 4, volume: 254},
{price: 1, volume: 444},
{price: 5, volume: 555}
]
const finaldata = [
{price: 2, volume: 555},
{price: 5, volume: 777},
{price: 9, volume: 5000},
{price: 10, volume: 8000},
{price: 15, volume: 4000}
]
const result = [...data].concat(finaldata).reduce((previous, {price, volume}) => {
const find = previous.find(item => item.price === price);
if (find) {
find.volume = find.volume volume
} else {
previous.push({price, volume})
}
return previous
}, [])
console.log(result)
uj5u.com熱心網友回復:
您也可以僅使用 Array.map() 方法來實作此目的。
現場演示:
const data=[{price: 2, volume: 123},
{price: 3, volume: 123},
{price: 4, volume: 254},
{price: 1, volume: 444},
{price: 5, volume: 555}];
const finalData = data.map((obj, index) => {
if (index < data.length - 1) {
data[index 1].price = data[index 1].price obj.price;
}
return obj;
});
console.log(finalData);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/504665.html
標籤:javascript 数组 减少
上一篇:使用css和jQuery實作按鈕
