我花了几个小时来寻找处理这个对象数组的方法:
[
{
"value": "foo01",
"Diagnosis_Code": "Tidak ada",
"name": "bar"
},
{
"value": "foo02",
"Diagnosis_Code": "Tidak ada",
"name": "bar"
},
{
"value": "foo03",
"Diagnosis_Code": "Tidak ada",
"name": "bar"
},
{
"value": "foo04",
"Diagnosis_Code": "Tidak ada",
"name": "bar"
},
{
"value": "val1",
"Diagnosis_Code": "foo03",
"name": "bar2"
},
{
"value": "val2",
"Diagnosis_Code": "foo01",
"name": "bar2"
},
{
"value": "val3",
"Diagnosis_Code": "foo02",
"name": "bar2"
},
{
"value": "val3",
"Diagnosis_Code": "foo04",
"name": "bar2"
},
{
"value": "val1",
"Diagnosis_Code": "foo01",
"name": "bar3"
},
{
"value": "val2",
"Diagnosis_Code": "foo03",
"name": "bar3"
},
{
"value": "val2",
"Diagnosis_Code": "foo04",
"name": "bar3"
},
{
"value": "val3",
"Diagnosis_Code": "foo02",
"name": "bar3"
},
{
"value": "val1",
"Diagnosis_Code": "foo01",
"name": "bar4"
},
{
"value": "val1",
"Diagnosis_Code": "foo02",
"name": "bar4"
},
{
"value": "val1",
"Diagnosis_Code": "foo04",
"name": "bar4"
},
{
"value": "val2",
"Diagnosis_Code": "foo03",
"name": "bar4"
}
]
我期望的JSON应该像这样:
[
{
"name":"bar",
"value":[
{
"value": "foo01",
"Diagnosis_Code": ["Tidak ada"],
"name": "bar",
},
{
"value": "foo02",
"Diagnosis_Code": ["Tidak ada"],
"name": "bar",
},
{
"value": "foo03",
"Diagnosis_Code": ["Tidak ada"],
"name": "bar",
},
{
"value": "foo04",
"Diagnosis_Code": ["Tidak ada"],
"name": "bar",
}
]
},
{
"name": "bar2",
"value": [
{
"value": "val1",
"Diagnosis_Code": ["foo03"],
"name": "bar2",
},
{
"value": "val2",
"Diagnosis_Code": ["foo01"],
"name": "bar2",
},
{
"value": "val3",
"Diagnosis_Code": ["foo02", "foo04"],
"name": "bar2",
}
]
},
{
"name": "bar3",
"value":[
{
"value": "val1",
"Diagnosis_Code": ["foo01"],
"name": "bar3",
},
{
"value": "val2",
"Diagnosis_Code": ["foo03", "foo04"],
"name": "bar3",
},
{
"value": "val3",
"Diagnosis_Code": ["foo02"],
"name": "bar3",
},
]
},
{
"name": "bar4",
"value": [
{
"value": "val1",
"Diagnosis_Code": ["foo01", "foo02", "foo04"],
"name": "bar4",
},
{
"value": "val2",
"Diagnosis_Code": ["foo03"],
"name": "bar4",
},
]
},
]
我希望能将重复的
name
值放入Object
中,如果json的Diagnosis_Code
与另一个值相同,则将其放入数组中。目前我使用的代码只是使用reduce来处理
name
,但我不知道如何处理Diagnosis_Code
属性。
var orgArray = [{"value":"foo01","Diagnosis_Code":"Tidak ada","name":"bar"},{"value":"foo02","Diagnosis_Code":"Tidak ada","name":"bar"},{"value":"foo03","Diagnosis_Code":"Tidak ada","name":"bar"},{"value":"foo04","Diagnosis_Code":"Tidak ada","name":"bar"},{"value":"val1","Diagnosis_Code":"foo03","name":"bar2"},{"value":"val2","Diagnosis_Code":"foo01","name":"bar2"},{"value":"val3","Diagnosis_Code":"foo02","name":"bar2"},{"value":"val3","Diagnosis_Code":"foo04","name":"bar2"},{"value":"val1","Diagnosis_Code":"foo01","name":"bar3"},{"value":"val2","Diagnosis_Code":"foo03","name":"bar3"},{"value":"val2","Diagnosis_Code":"foo04","name":"bar3"},{"value":"val3","Diagnosis_Code":"foo02","name":"bar3"},{"value":"val1","Diagnosis_Code":"foo01","name":"bar4"},{"value":"val1","Diagnosis_Code":"foo02","name":"bar4"},{"value":"val1","Diagnosis_Code":"foo04","name":"bar4"},{"value":"val2","Diagnosis_Code":"foo03","name":"bar4"}];
var newArray = orgArray.reduce(function(acc, curr) {
var findIfNameExist = acc.findIndex(function(item) {
return item.name === curr.name;
})
if (findIfNameExist === -1) {
let obj = {
'name': curr.name,
"value": [curr]
}
acc.push(obj)
} else {
acc[findIfNameExist].value.push(curr)
}
return acc;
}, []);
console.log(newArray)
有没有一种处理将重复的Diagnosis_Code
转换成数组的方法?
value[index].value
将会是动态的。 - Flixname, value 和 Diagnosis_Code
键,但如果我在数组中有超过 3 个对象,我该如何处理这些数组呢?所以我需要声明其他的键,对吗? - FlixDiagnosis_Code
属性,以获取压缩的数组版本;) - sjahan