2017-06-29 106 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