簡體   English   中英

將 JSON 對象與鍵值組合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM