基于下面的JSON数组,我需要根据每个项目的category
属性将其拆分为单独的JSON数组。
因此,类别属性设置为person
的所有项目都将被提取出来并保存到一个新变量中,该变量只包含category
项目的新JSON数组。
然后我需要为使用JavaScript或jQuery找到的每个类别执行此操作。
以下示例数据有3个不同的类别值:
代码:
var mock_data_types = [
{
"type":"first_name",
"name":"First Name1",
"description": "Random generated First Name",
"example":"Jason",
"category":"person"
},
{
"type": "last_name",
"name": "Last Name2",
"description": "Random generated Last Name",
"example": "Davis",
"category": "address"
},
{
"type": "domain",
"name": "Domain Name3",
"description": "Random generated WWW Domain Name",
"example": "google.com",
"category": "it"
},
{
"type": "Gender",
"name": "Gender4",
"description": "Random generated Gender Type",
"example": "Female",
"category": "person"
},
{
"type": "first_name",
"name": "First Name5",
"description": "Random generated First Name",
"example": "Jason",
"category": "person"
},
{
"type": "last_name",
"name": "Last Name6",
"description": "Random generated Last Name",
"example": "Davis",
"category": "address"
},
{
"type": "domain",
"name": "Domain Name7",
"description": "Random generated WWW Domain Name",
"example": "google.com",
"category": "person"
},
{
"type": "Gender",
"name": "Gender8",
"description": "Random generated Gender Type",
"example": "Female",
"category": "address"
},
{
"type": "first_name",
"name": "First Name9",
"description": "Random generated First Name",
"example": "Jason",
"category": "it"
},
{
"type": "last_name",
"name": "Last Name10",
"description": "Random generated Last Name",
"example": "Davis",
"category": "person"
},
{
"type": "domain",
"name": "Domain Name11",
"description": "Random generated WWW Domain Name",
"example": "google.com",
"category": "it"
},
{
"type": "Gender",
"name": "Gender12",
"description": "Random generated Gender Type",
"example": "Female",
"category": "person"
},
{
"type": "first_name",
"name": "First Name13",
"description": "Random generated First Name",
"example": "Jason",
"category": "address"
},
{
"type": "last_name",
"name": "Last Name14",
"description": "Random generated Last Name",
"example": "Davis",
"category": "person"
},
{
"type": "domain",
"name": "Domain Name15",
"description": "Random generated WWW Domain Name",
"example": "google.com",
"category": "it"
},
{
"type": "Gender",
"name": "Gender16",
"description": "Random generated Gender Type",
"example": "Female",
"category": "person"
},
];
答案 0 :(得分:2)
这是一个简单的javascript解决方案,不使用任何库
var dt = {};
for(var a=0;a<mock_data_types.length;a++) {
if(dt[mock_data_types[a].category]){
dt[mock_data_types[a].category].push(mock_data_types[a])
}else{
dt[mock_data_types[a].category] = [mock_data_types[a]];
}
}
答案 1 :(得分:2)
var mock_data_types = [{"type":"first_name","name":"First Name1","description":"Random generated First Name","example":"Jason","category":"person"},{"type":"last_name","name":"Last Name2","description":"Random generated Last Name","example":"Davis","category":"address"},{"type":"domain","name":"Domain Name3","description":"Random generated WWW Domain Name","example":"google.com","category":"it"},{"type":"Gender","name":"Gender4","description":"Random generated Gender Type","example":"Female","category":"person"},{"type":"first_name","name":"First Name5","description":"Random generated First Name","example":"Jason","category":"person"},{"type":"last_name","name":"Last Name6","description":"Random generated Last Name","example":"Davis","category":"address"},{"type":"domain","name":"Domain Name7","description":"Random generated WWW Domain Name","example":"google.com","category":"person"},{"type":"Gender","name":"Gender8","description":"Random generated Gender Type","example":"Female","category":"address"},{"type":"first_name","name":"First Name9","description":"Random generated First Name","example":"Jason","category":"it"},{"type":"last_name","name":"Last Name10","description":"Random generated Last Name","example":"Davis","category":"person"},{"type":"domain","name":"Domain Name11","description":"Random generated WWW Domain Name","example":"google.com","category":"it"},{"type":"Gender","name":"Gender12","description":"Random generated Gender Type","example":"Female","category":"person"},{"type":"first_name","name":"First Name13","description":"Random generated First Name","example":"Jason","category":"address"},{"type":"last_name","name":"Last Name14","description":"Random generated Last Name","example":"Davis","category":"person"},{"type":"domain","name":"Domain Name15","description":"Random generated WWW Domain Name","example":"google.com","category":"it"},{"type":"Gender","name":"Gender16","description":"Random generated Gender Type","example":"Female","category":"person"}];
var categories = mock_data_types.reduce((categories, dataType) => {
categories[dataType.category] = categories[dataType.category] || [];
categories[dataType.category].push(dataType);
return categories;
}, {});
document.write('<pre>' + JSON.stringify(categories, null, ' ') + '</pre>');
答案 2 :(得分:0)
如果您不喜欢使用图书馆,我会告诉您获取underscore。使用where函数,您可以执行以下操作来完成结果。
_.where(mock_data_types, {'category': 'person'});
我还希望你可以通过提取数据来增加复杂性并添加任意数量的属性,例如:
_.where(mock_data_types, {'category': 'person', 'type': 'first_name'});