簡體   English   中英

轉換對象js顯示

[英]Convert object js display

例如,我有對象js

data = {"dt1_a": 20, "dt1_b": 30, "dt2_a": 40, "dt2_b": 50}

我想轉換數據

data1 = {"dt1": {"a": 20, "b": 30}, "dt2": {"a": 40, "b": 50}}

請提出具體的解決方案。

嘗試類似的東西

var data1 = {};
$.each(data, function (key, value) {
    var parts = key.split('_'),
        p1 = parts[0];
    if (!data1[p1]) {
        data1[p1] = {};
    }
    data1[p1][parts[1]] = value;
})
console.log(data1)

演示: 小提琴

抓取對象鍵並循環遍歷它們,然后將正確的屬性應用於新對象。

data = {"dt1_a": 20, "dt1_b": 30, "dt2_a": 40, "dt2_b": 50};
var data1 = {};
Object.keys(data).forEach(function(key){
   var keySplit = key.split("_");
   //create dt1, dt2 properties if they do not exist yet
   data1[keySplit[0]] = data1[keySplit[0]] || {};
   data1[keySplit[0]][keySplit[1]] = data[key]
});

請注意,這取決於支持forEach的瀏覽器,如果瀏覽器沒有, 則可以使用polyfill

你也可以使用for..in作為Joseph Marikle在評論中提及,這也更兼容

for(key in data){
   var keySplit = key.split("_");
   //create dt1, dt2 properties if they do not exist yet
   data1[keySplit[0]] = data1[keySplit[0]] || {};
   data1[keySplit[0]][keySplit[1]] = data[key]
}

那么@Arun P Johny@Patrick Evans已經涵蓋了最好的方法。 我想再分享一個答案,就像用簡單的術語重新編寫上述兩個答案一樣。

var final = {};
$.each(data, function (index, value) {

    var arr = index.split('_'),
        name = arr[0],
        val = arr[1];

    if (final[name]) {
        final[name][val] = value;
    } else {
        final[name] = {};
        final[name][val] = value;
    }

});
console.log(final);

現場演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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