我有一个生成的JSON PHP数据,我通过AJAX请求在JavaScript中作为Object接收并尝试转换为数组。
例如,我可能有这个(不是真实的数据):
Array[1]
0:Object
items: Object
0: "First data item"
1: "Second data item"
__proto__: Object
Some unimportant getter functions
__proto__: Object
Some unimportant getter functions
length: 1
__proto__: Object
Some functions
我能够将外部部分转换为数组,但是如何将内部部分(尤其是items:Object
处的字典)转换为数组呢?
我的结构发生了变化
Array[1]
title:#data
答案 0 :(得分:0)
如果您能够修改输出JSON的服务器脚本,最好将数据格式化为您想要使用的实际格式。
但是如果要将对象属性值转换为数组,可以通过在对象上设置length
属性,然后在.call方法上使用Array.slice来实现。为了做到这一点,对象属性名称必须是数字(即0,1,2,3等),任何不会自动添加到数组中。
var data = [
{
items:{
0: "Item 1",
1: "Item 2",
2: "Item 3",
3: "Item 4",
}
},
{
items:{
0: "Item 5",
1: "Item 6",
}
}
];
for(var i=0; i<data.length; i++){
var items = data[i].items;
items.length = Object.keys(items).length;
data[i].items = [].slice.call(items,0);
}
console.log(data);
document.body.innerHTML=JSON.stringify (data);
如果您的对象属性名称不是数字,则必须进行循环并手动将每个值添加到数组
for(var i=0; i<data.length; i++){
var items = data[i].items;
var itemArray = [];
Object.keys(items).forEach(function(key){
itemArray.push( items[key] );
});
data[i].items = itemArray;
}