[英]Combine JSON Objects with Key Value
我有多個 JavaScrit 對象,我使用JSON.stringify
將它們轉換為以下格式:
{"date":"2016-01-07T12:45:00.000Z",
"duration":120,
"location":"ExampleLocation"}
現在我想用以下格式將這些對象保存到一個變量中:
var labs = {
"2016-01-07":[{
"date":"2016-01-07T12:45:00.000Z",
"duration":120,
"location":"ExampleLocation"
}],
"2017-01-05":[{
"date": "2017-01-05T14:45:00.000Z",
"duration": 120,
"location": "ExampleLocation"
}], //etc
}
所以我想組合對象並將其中一個值繪制為每個對象的“鍵”。 我完全不知道如何實現這一目標。
你應該遍歷對象數組,從date
屬性創建index
,然后你應該檢查你的分組數組是否包含這個索引,如果是,你應該將當前元素推送到該索引下的數組,如果沒有你應該在該索引下創建新數組和將當前元素推送到它。
看看下面的片段。
var elements = [{"date":"2016-01-07T12:45:00.000Z", "duration":120, "location":"ExampleLocation1"}, {"date":"2016-01-04T12:45:00.000Z", "duration":120, "location":"ExampleLocation2"}, {"date":"2016-01-05T12:45:00.000Z", "duration":120, "location":"ExampleLocation3"}, {"date":"2016-01-07T12:45:00.000Z", "duration":120, "location":"ExampleLocation4"}, {"date":"2016-01-05T12:45:00.000Z", "duration":120, "location":"ExampleLocation5"}]; var groupedElements = {}; elements.forEach(function(element) { var index = element.date.slice(0, 10); if(groupedElements[index] === undefined) { groupedElements[index] = []; } groupedElements[index].push(element); }); document.write(JSON.stringify(groupedElements));
您可以使用reduce
創建一個按日期分組的新對象並將值放入數組中:
var arr = [ {"date":"2016-01-06T12:15:00.000Z", "duration":120, "location":"ExampleLocation"}, {"date":"2016-01-06T12:45:00.000Z", "duration":120, "location":"ExampleLocation"}, {"date":"2017-07-07T12:45:30.000Z", "duration":120, "location":"ExampleLocation"}, {"date":"2017-07-07T12:45:44.000Z", "duration":120, "location":"ExampleLocation"}, ]; var grouped = arr.reduce((a, next) => { let key = next.date.split('T')[0]; a[key] = (a[key] || []).concat(next); return a; }, {}); console.log(grouped);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.