Я новичок в Stackoverflow, а также новичок в JS. Я потерялся в том, как манипулировать данными, и мне нужна помощь. У меня есть набор данных, в котором есть несколько дублирующихся quoteDate. Мне нужно создать новый набор данных, добавив цены под его дату с опцией в качестве имени свойства.
Пожалуйста, смотрите ниже исходные данные:
const dataSet = [
{"quoteDate":20190925,"price":39926,"option":0},
{"quoteDate":20191118,"price":43239,"option":0},
{"quoteDate":20190925,"price":77946,"option":1},
{"quoteDate":20191125,"price":43178,"option":0},
{"quoteDate":20191202,"price":46992,"option":0},
{"quoteDate":20191210,"price":84596,"option":1},
{"quoteDate":20191202,"price":32256,"option":1},
{"quoteDate":20191223,"price":32285,"option":0},
{"quoteDate":20200429,"price":68173,"option":1},
]
Вот конечный результат желания:
const newDataSet = [
{"Date": "20190925","A": 39926,"B": 77946,},
{"Date": "20191118","A": 43239,},
{"Date": "20191125","A": 43178,},
{"Date": "20191202","A": 46992,"B": 32256,},
{"Date": "20191210","B": 84596,},
{"Date": "20191223","A": 32285,},
{"Date": "20200429","B": 68173,},
]
Я пробовал код ниже, но безуспешно :(
let newDataSet = Object.values(dataSet.reduce((a, {price, quoteDate, option})=>{
if(!a[quoteDate] && a[option] === 0)
a[quoteDate] = Object.assign({},{'A': price, Date: quoteDate });
else if(!a[quoteDate] && a[option] === 1)
a[quoteDate] = Object.assign({},{'B': price, Date: quoteDate });
return a;
},{}));
console.log(newDataSet);
Было бы здорово, если бы кто-нибудь мог помочь мне в этом!
Спасибо!