我有以下 JSON 对象:
var data =JSON.parse('[{"Title":"Test 1","State":"Colorado"},
{"Title":"Test 1","State":"Arizona"},
{"Title":"Test 2","State":"Utah"},
{"Title":"Test 2","State":"Arizona"},
{"Title":"Test 3","State":"Arizona"}]');
如何解析此 data
对象以便获得以下输出:
resultData = [{"Title":"Test 1", State: ["Colorado", "Arizona"]},
{"Title":"Test 2", State: ["Utah", "Arizona"]},
{"Title":"Test 3", State: ["Arizona"]}]
到目前为止,我尝试了以下操作:
var resultData = {},
groupBy = "Title";
for (var i = 0; i < data.length; i++) {
if (!resultData[data[i][groupBy]])
resultData[data[groupBy]] = [];
resultData[data[i][groupBy]].push(data[i]);
};
但它没有帮助并返回一些奇怪的对象,如下所示:
resultData = [{Test 1: [{State: "Colorado"}, {State: "Arizona"}]},
{Test 2: [{State: "Utah"}, {State: "Arizona"}]},
{Test 3: [{State: "Arizona"}]}]
有人可以帮助我实现同样的目标吗?
最佳答案
您想要实现的目标是减少的完美案例:
第 1 步 - 像您已经做的那样解析数据
var data =JSON.parse('[{"Title":"Test 1","State":"Colorado"},
{"Title":"Test 1","State":"Arizona"},
{"Title":"Test 2","State":"Utah"},
{"Title":"Test 2","State":"Arizona"},
{"Title":"Test 3","State":"Arizona"}]');
第 2 步 - 将具有相同标题的州合并到数组中
var titles = data.reduce(function(acc, item){
var title = item.Title;
var state = item.State;
if (!Object.prototype.hasOwnProperty.call(acc, title)){
acc[title] = [];
}
acc[title].push(state);
return acc;
}, {});
第 3 步 - 使用组合状态构建最终数组
var resultData = Object.keys(titles).map(function(title){
return {
Title: title,
State: titles[title]
}
});
var data = JSON.parse('[{"Title":"Test 1","State":"Colorado"}, {"Title":"Test 1","State":"Arizona"},{"Title":"Test 2","State":"Utah"},{"Title":"Test 2","State":"Arizona"},{"Title":"Test 3","State":"Arizona"}]');
var titles = data.reduce(function(acc, item) {
var title = item.Title;
var state = item.State;
if (!Object.prototype.hasOwnProperty.call(acc, title)) {
acc[title] = [];
}
acc[title].push(state);
return acc;
}, {});
var resultData = Object.keys(titles).map(function(title) {
return {
Title: title,
State: titles[title]
}
});
console.log(resultData)
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 解析 JSON 对象以获取唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44514235/