Javascript 使用groupby设置Json对象格式
我正试图通过groupping city name格式化json对象。我正在尝试使用一个单独的数组,并根据find和not found移动项目,以构建一个字符串。我正在使用javascript/angularjs来实现这一点 我当前的字符串Javascript 使用groupby设置Json对象格式,javascript,angularjs,json,grouping,Javascript,Angularjs,Json,Grouping,我正试图通过groupping city name格式化json对象。我正在尝试使用一个单独的数组,并根据find和not found移动项目,以构建一个字符串。我正在使用javascript/angularjs来实现这一点 我当前的字符串 CurrentDataFormat = [ {"Id":17,"code":"123","cityName":"Los Angeles","startDate":"1/20/2016","endDate":"1/20/2016"}, {"Id":18,"
CurrentDataFormat =
[
{"Id":17,"code":"123","cityName":"Los Angeles","startDate":"1/20/2016","endDate":"1/20/2016"},
{"Id":18,"code":"456","cityName":"Chicago ","startDate":"1/22/2016","endDate":"1/25/2016"},
{"Id":19,"code":"789","cityName":"Los Angeles","startDate":"1/13/2016","endDate":"1/21/2016"}
]
我正在尝试实现这种格式
ExpectedDataFormat =
[{
"name":"Los Angeles",
"CityData":
[
{"Id":"17","code":"123","startDate":"1/20/2016","endDate":"1/20/2016"},
{"Id":"19","code":"789","startDate":"1/13/2016","endDate":"1/21/2016"}
]},{
"name":"Chicago",
"CityData":
[
{"Id":"18","code":"456","startDate":"1/22/2016","endDate":"1/25/2016"},
]}
}
逻辑我在尝试什么(尽管尝试使用不同的数据)
检查以下代码
CurrentDataFormat = [{
"Id": 17,
"code": "123",
"cityName": "Los Angeles",
"startDate": "1/20/2016",
"endDate": "1/20/2016"
},
{
"Id": 18,
"code": "456",
"cityName": "Chicago",
"startDate": "1/22/2016",
"endDate": "1/25/2016"
},
{
"Id": 19,
"code": "789",
"cityName": "Los Angeles",
"startDate": "1/13/2016",
"endDate": "1/21/2016"
}
]
var refinedArray = {};
for (i = 0; i < CurrentDataFormat.length; i++) {
refinedArray[CurrentDataFormat[i].cityName] = refinedArray[CurrentDataFormat[i].cityName] ? refinedArray[CurrentDataFormat[i].cityName] : {};
refinedArray[CurrentDataFormat[i].cityName].name = CurrentDataFormat[i].cityName;
refinedArray[CurrentDataFormat[i].cityName].CityData = refinedArray[CurrentDataFormat[i].cityName].CityData ? refinedArray[CurrentDataFormat[i].cityName].CityData : [];
refinedArray[CurrentDataFormat[i].cityName].CityData.push({
"Id": CurrentDataFormat[i].Id,
"code": CurrentDataFormat[i].code,
"startDate": CurrentDataFormat[i].startDate,
"endDate": CurrentDataFormat[i].endDate
});
}
var ExpectedDataFormat = [];
for (singleCityName in refinedArray){
ExpectedDataFormat.push({'name' : refinedArray[singleCityName].name, 'CityData' : refinedArray[singleCityName].CityData});
};
CurrentDataFormat=[{
“Id”:17,
“代码”:“123”,
“城市名称”:“洛杉矶”,
“起始日期”:“2016年1月20日”,
“截止日期”:“2016年1月20日”
},
{
“Id”:18,
“代码”:“456”,
“城市名称”:“芝加哥”,
“起始日期”:“2016年1月22日”,
“截止日期”:“2016年1月25日”
},
{
“Id”:19,
“代码”:“789”,
“城市名称”:“洛杉矶”,
“起始日期”:“1/13/2016”,
“截止日期”:“2016年1月21日”
}
]
var-darray={};
对于(i=0;i
ExpectedDataFormat
保存您所需的输出
在处运行演示检查以下代码
CurrentDataFormat = [{
"Id": 17,
"code": "123",
"cityName": "Los Angeles",
"startDate": "1/20/2016",
"endDate": "1/20/2016"
},
{
"Id": 18,
"code": "456",
"cityName": "Chicago",
"startDate": "1/22/2016",
"endDate": "1/25/2016"
},
{
"Id": 19,
"code": "789",
"cityName": "Los Angeles",
"startDate": "1/13/2016",
"endDate": "1/21/2016"
}
]
var refinedArray = {};
for (i = 0; i < CurrentDataFormat.length; i++) {
refinedArray[CurrentDataFormat[i].cityName] = refinedArray[CurrentDataFormat[i].cityName] ? refinedArray[CurrentDataFormat[i].cityName] : {};
refinedArray[CurrentDataFormat[i].cityName].name = CurrentDataFormat[i].cityName;
refinedArray[CurrentDataFormat[i].cityName].CityData = refinedArray[CurrentDataFormat[i].cityName].CityData ? refinedArray[CurrentDataFormat[i].cityName].CityData : [];
refinedArray[CurrentDataFormat[i].cityName].CityData.push({
"Id": CurrentDataFormat[i].Id,
"code": CurrentDataFormat[i].code,
"startDate": CurrentDataFormat[i].startDate,
"endDate": CurrentDataFormat[i].endDate
});
}
var ExpectedDataFormat = [];
for (singleCityName in refinedArray){
ExpectedDataFormat.push({'name' : refinedArray[singleCityName].name, 'CityData' : refinedArray[singleCityName].CityData});
};
CurrentDataFormat=[{
“Id”:17,
“代码”:“123”,
“城市名称”:“洛杉矶”,
“起始日期”:“2016年1月20日”,
“截止日期”:“2016年1月20日”
},
{
“Id”:18,
“代码”:“456”,
“城市名称”:“芝加哥”,
“起始日期”:“2016年1月22日”,
“截止日期”:“2016年1月25日”
},
{
“Id”:19,
“代码”:“789”,
“城市名称”:“洛杉矶”,
“起始日期”:“1/13/2016”,
“截止日期”:“2016年1月21日”
}
]
var-darray={};
对于(i=0;i
ExpectedDataFormat
保存您所需的输出
在上运行演示,这段代码能满足您的需要吗
var newarray = [];
CurrentDataFormat.forEach(function(item){
if(newarray[item.cityName] != undefined){
var key = item.cityName;
delete item.cityName;
newarray[key].CityData.push(item);
}else{
var o = {};
o.name = item.cityName;
o.CityData = [];
o.CityData.push(item);
newarray[o.name] = o;
}
});
console.log(newarray);
这段代码能满足您的需要吗
var newarray = [];
CurrentDataFormat.forEach(function(item){
if(newarray[item.cityName] != undefined){
var key = item.cityName;
delete item.cityName;
newarray[key].CityData.push(item);
}else{
var o = {};
o.name = item.cityName;
o.CityData = [];
o.CityData.push(item);
newarray[o.name] = o;
}
});
console.log(newarray);
在jsFiddle.net上创建一个jsFiddle。因此,我们可以更好地理解您的问题。在jsFiddle.net上创建一个jsFiddle。因此,我们可以更好地理解您的问题。您给出了几乎正确的答案,但在if(newarray[item.cityName]!=undefined){delete item.cityName;newarray[item.cityName].CityData.push(item);}正如用户所提到的,cityData将没有cityName。这似乎是非常通用的代码,非常有用,但是JSFIDLE抛出错误cityData未定义。因此无法将其标记为正确。抱歉,这是
delete
行。我不假思索地加了上去。修复了它,现在它可以工作了。您已经给出了几乎正确的答案,但在if(newarray[item.cityName]!=undefined){delete item.cityName;newarray[item.cityName].CityData.push(item);}正如用户所提到的,cityData将没有cityName。这似乎是非常通用的代码,非常有用,但是JSFIDLE抛出错误cityData未定义。因此无法将其标记为正确。抱歉,这是delete
行。我不假思索地加了上去。修复了它,所以现在它可以工作了。