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