我需要帮助在 javascript 中将 JSON 数据转换为 3 级多维数组
I need help converting JSON data into a 3 level multidimensional array in javascript
我需要帮助在javascript中将JSON数据转换为3级多维数组。我以 JSON 格式检索的代码如下所示:
[
{'City':'Philadelphia','State':'Pennsylvania','Country':'United States'},
{'City':'Pittsburgh','State':'Pennsylvania','Country':'United States'},
{'City':'Harrisburg','State':'Pennsylvania', 'Country':'United States'},
{'City':'Sacramento', 'State':'California', 'Country':'United States'},
{'City':'Fremont', 'State':'California', 'Country':'United States'},
{'City':'Los Angeles', 'State':'California','Country': 'United States'},
{'City':'Sydney', 'State':'New South Wales', 'Country':'Australia'},
{'City':'Melbourne', 'State':'Victoria', 'Country':'Australia'}
]
但我需要这种格式:
$scope.countries = {
'United States':
{
'Pennsylvania': ['Philadelphia', 'Pittsburgh', 'Harrisburg'],
'California': ['Sacramento', 'Fremont', 'Los Angeles']
},
'Australia':
{
'New South Wales': ['Sydney'],
'Victoria': ['Melbourne']
}
};
所以它看起来像这样给你你想要的 JSON
普伦克:http://plnkr.co/edit/Nx4hrAex8JCCbnYG5X3t?p=preview
编辑
已编辑以使用新格式。
var original = [
{'City':'Philadelphia','State':'Pennsylvania','Country':'United States'},
{'City':'Pittsburgh','State':'Pennsylvania','Country':'United States'},
{'City':'Harrisburg','State':'Pennsylvania', 'Country':'United States'},
{'City':'Sacramento', 'State':'California', 'Country':'United States'},
{'City':'Fremont', 'State':'California', 'Country':'United States'},
{'City':'Los Angeles', 'State':'California','Country': 'United States'},
{'City':'Sydney', 'State':'New South Wales', 'Country':'Australia'},
{'City':'Melbourne', 'State':'Victoria', 'Country':'Australia'}
]
var json = {};
for(var i in original){
var country = original[i].Country;
var state = original[i].State;
var city = original[i].City;
var obj = {};
if(!json.hasOwnProperty(country)){
obj[state] = [city];
json[country] = obj;
}
else if(json[country].hasOwnProperty(state)){
json[country][state].push(city);
}
else if(!json[country].hasOwnProperty(state)){
json[country][state] = [city];
}
}
我强烈建议您更改数据的通过方式。 话虽如此,如果您打算键入数组括号而不是对象括号,我已经为您的问题提供了一个 JSBin 解决方案。
https://jsbin.com/qaxubigija/edit?js,console
function dataParse() {
var data = [
[ 'Philadelphia','Pennsylvania','United States'],
['Pittsburgh','Pennsylvania','United States'],
['Harrisburg','Pennsylvania', 'United States'],
['Sacramento', 'California', 'United States'],
['Fremont', 'California', 'United States'],
['Los Angeles', 'California', 'United States'],
['Sydney', 'New South Wales', 'Australia'],
['Melbourne', 'Victoria', 'Australia']
];
var newObject = {};
for(var i = 0; i < data.length; i++) {
// create your references
var currentNode = data[i],
city = currentNode[0],
state = currentNode[1],
country = currentNode[2];
// check that the country property exists
// create if it does not exist
if( typeof newObject[country] == 'undefined'){
newObject[country] = {};
}
// check that the state property exists
// create if it does not exist
if( typeof newObject[country][state] == 'undefined'){
newObject[country][state] = [];
}
// push city to the proper array
newObject[country][state].push(city);
}
console.log(newObject);
}
dataParse();
相关文章:
- Javascript转换数组
- JSON.stringify不转换数组
- 使用underscore.js转换数组
- 对象转换数组
- 在 JavaScript 中的值列表中转换数组
- 转换数组并反转
- 用一个巨大的字符串“”转换数组;数字”;,用逗号分隔成一个数字数组(而不是字符串)
- 用javascript转换数组中的日期
- 如何转换数组字符串
- 转换数组中的输入值
- 如何在创建数组后转换数组中的var
- Json转换数组是一个字符串
- 在AngularJS中转换数组属性
- 在javascript中转换数组
- 动态转换数组为树状结构
- 使用Javascript和Underscore.js转换数组对象
- node.js中使用node-gyp的转换数组
- Nodejs -转换数组
- D3 js转换数组的矩形不工作
- 在Javascript中转换数组的数字到字符串