2017-06-29 42 views
-3

我收到下面創建JSON

{ 
    "category": "test", 
    "sealing_temp_1": "", 
    "sealing_temp_2": "", 
    "sealing_temp_3": "", 
    "level_sensor_1": "", 
    "level_sensor_2": "", 
    "level_sensor_3": "", 
    "check_pack_1": "", 
    "check_pack_2": "", 
    "check_pack_3": "", 
    "comment": "" 
} 

這個JSON數組,我想將其變成這樣的結構,節省

{ 
    "category": "test", 
    "sealing_temp": "['a', 'b', 'c']", 
    "level_sensor": "['x', 'y', 'z']", 
    "check_pack": "[1, 2, 3]", 
    "comment": "" 
} 

有人能指導我,我試圖用for..in但在這個過程

+1

添加您試圖代碼 – Ayyash

+1

@NinaScholz - 沒有什麼在任何代碼塊,是不是完全有效的JSON。 – Quentin

+0

我建議使用'Object.keys'也許? – evolutionxbox

回答

2

你可能分裂的關鍵,如果它在它的一端有個數字,然後將其用於數組來填補迷路了。

這一提議改變對象,並刪除不想要的性質,這值現在是在收集的陣列。

var object = { category: "test", sealing_temp_1: "s1", sealing_temp_2: "s2", sealing_temp_3: "s3", level_sensor_1: "l1", level_sensor_2: "l2", level_sensor_3: "l3", check_pack_1: "c1", check_pack_2: "c2", check_pack_3: "c3", comment: "cc" }; 
 
    
 
Object.keys(object).forEach(function (k) { 
 
    var parts = k.split(/_(?=\d+$)/); 
 
    if (parts.length === 2) { 
 
     object[parts[0]] = object[parts[0]] || []; 
 
     object[parts[0]][parts[1] - 1] = object[k]; // subtract one for zero based array 
 
     delete object[k]; 
 
    } 
 
}); 
 
console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

謝謝,代碼符合預期。你能告訴我什麼是刪除對象[k]嗎? – Jonathan

+0

它刪除給定引用的屬性,例如'object ['sealing_temp_1']'。該值先前被移動到數組中,即'delete'語句的上面兩行。 –

+0

真棒,謝謝 – Jonathan