将json对象转换为数组以使用Javascript迭代ng-repeat?

Suk*_* MS 9 javascript arrays json angularjs

这是我的示例json,我从firebase获取我的json obj我必须将列表转换为数组以在html通过ng-repeat绑定.

我的Json对象是

  {
  "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)