Suk*_* MS 9 javascript arrays json angularjs
这是我的示例json,我从firebase获取我的json obj我必须将列表转换为数组以在html通过ng-repeat绑定.
{
"cats1": {
"Name": "cricket",
"imgUrl": "some url",
"list1": {
"bat": {
"Name": "bat",
"imgUrl": "some url",
"price": "$100"
},
"pads": {
"displayName": "pads",
"imgUrl": "some url",
"price": "$50"
}
}
},
"cats2": {
"Name": "football",
"imgUrl": "some url"
}
}
Run Code Online (Sandbox Code Playgroud)
这是我需要的数组结构,当我添加新列表时,它必须在cricket类别中唯一存储.
[
{
"Name": "cricket",
"imgUrl": "some url",
"list1": [
{
"Name": "bat",
"imgUrl": "some url",
"price": "$100"
},
{
"displayName": "pads",
"imgUrl": "some url",
"price": "$50"
}
]
},
{
"Name": "football",
"imgUrl": "some url"
}
]
Run Code Online (Sandbox Code Playgroud)
我是新来的角度任何人请帮我弄清楚这个问题
kuk*_*kuz 16
使用Object.keys并传递它们Array.prototype.map以创建所需的数组 - 请参阅下面的演示:
var object={cats1:{Name:"cricket",imgUrl:"some url",list1:{bat:{Name:"bat",imgUrl:"some url",price:"$100"},pads:{displayName:"pads",imgUrl:"some url",price:"$50"}}},cats2:{Name:"football",imgUrl:"some url"}};
var result = Object.keys(object).map(e=>object[e]);
console.log(result);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper{top:0;max-height:100%!important;}Run Code Online (Sandbox Code Playgroud)
编辑:
更正解决方案以制作list1阵列:
var object={cats1:{Name:"cricket",imgUrl:"some url",list1:{bat:{Name:"bat",imgUrl:"some url",price:"$100"},pads:{displayName:"pads",imgUrl:"some url",price:"$50"}}},cats2:{Name:"football",imgUrl:"some url"}};
var result = Object.keys(object).map(function(e){
Object.keys(object[e]).forEach(function(k){
if(typeof object[e][k] == "object") {
object[e][k] = Object.keys(object[e][k]).map(function(l){
return object[e][k][l];
});
}
});
return object[e];
});
console.log(result);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper{top:0;max-height:100%!important;}Run Code Online (Sandbox Code Playgroud)