4 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用Object.values將對(duì)象轉(zhuǎn)換為數(shù)組。使用reduce循環(huán)數(shù)組通,并總結(jié)成一個(gè)對(duì)象。使用substring(0, 4)獲得前4個(gè)字符的日期字符串的。
var obj = {"0":{"date":"2018-11-30","value":"1.16000"},"1":{"date":"2018-08-31","value":"1.01000"},"2":{"date":"2018-06-01","value":"1.01000"},"3":{"date":"2018-02-28","value":"1.01000"},"4":{"date":"2017-11-30","value":"1.01000"},"5":{"date":"2017-08-30","value":"0.94000"},"6":{"date":"2017-06-01","value":"0.94000"},"7":{"date":"2017-02-27","value":"0.94000"},"8":{"date":"2016-02-26","value":"0.89000"}}
var result = Object.values(obj).reduce((c, v) => {
var y = v.date.substring(0, 4);
(c[y] = c[y] || []).push(v);
return c;
}, {});
console.log(result);

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
碼:
const data = {"8": {"date": "2016-02-26","value": "0.89000"},"7": {"date": "2017-02-27","value": "0.94000"},"6": {"date": "2017-06-01","value": "0.94000"},"5": {"date": "2017-08-30","value": "0.94000"},"4": {"date": "2017-11-30","value": "1.01000"},"3": {"date": "2018-02-28","value": "1.01000"},"2": {"date": "2018-06-01","value": "1.01000"},"1": {"date": "2018-08-31","value": "1.01000"},"0": {"date": "2018-11-30","value": "1.16000"}};
const result = Object.values(data).reduce((a, {date, value}) => {
const year = date.slice(0, 4);
a[year] = a[year] || [];
a[year].push({date, value});
return a;
}, {});
console.log(result);

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用單個(gè)Array.reduce執(zhí)行此操作,并且可以在獲取所需的排序輸出之前使用Array.sortreduce
:
var data = { "8": { "date": "2016-02-26", "value": "0.89000" }, "7": { "date": "2017-02-27", "value": "0.94000" }, "6": { "date": "2017-06-01", "value": "0.94000" }, "5": { "date": "2017-08-30", "value": "0.94000" }, "4": { "date": "2017-11-30", "value": "1.01000" }, "3": { "date": "2018-02-28", "value": "1.01000" }, "2": { "date": "2018-06-01", "value": "1.01000" }, "1": { "date": "2018-08-31", "value": "1.01000" }, "0": { "date": "2018-11-30", "value": "1.16000" } }
let sortedInput = Object.values(data).sort((a,b) => new Date(a.date) - new Date(b.date))
let result = sortedInput.reduce((r, {date, value}, i, a) => {
let key = date.split('-')[0]
r[key] = r[key] || []
r[key].push({date, value})
return r
}, {})
console.log(result)
添加回答
舉報(bào)