【问题标题】:How to push some data from Json into new array in AngularJS?如何将 Json 中的一些数据推送到 AngularJS 中的新数组中?
【发布时间】:2015-03-28 22:26:01
【问题描述】:

假设我有这个 Json ..

{
    "name": "Mark",
    "gender": "male",
    "account1": {
        "accountNo": 1201,
        "balance": 300
    },
    "account2": {
        "accountNo": 1354,
        "balance": 5000
    }
}    

我的期望是......

$scope.myArray = [
    {
        "accountNo": 1201,
        "balance": 300
    },
    {
        "accountNo": 1354,
        "balance": 5000
    }
];

在 AngularJS 中,我如何选择 Json 数据的一部分并迭代地将其推送到数组中(我的意思是,当我有 account1、account2、account3 或更多时,它仍然可以将它们添加到数组中)。

【问题讨论】:

    标签: arrays json angularjs


    【解决方案1】:

    您通常可以只分配数组,但在这种情况下,这不是一个选项,因为您的数组是伪数组。

    理想情况下,您希望能够做这个答案(相关问题)所做的事情:How to return and array inside a JSON object in Angular.js 这很简单

    $scope.myArray = json.accounts;
    

    但是,如上所述,您没有帐户数组,因此您需要创建一个。

    var accounts = [];
    for(var key in json){
     if( !json.hasOwnProperty(key) // skip prototype extensions
      || !json[key].hasOwnProperty("accountNo") //skip non account objects
     ) continue; 
     accounts.push(json[key]);
    }
    

    现在你可以使用这个数组了

    $scope.myArray = accounts;
    

    【讨论】:

      【解决方案2】:

      您可以像访问数组一样访问 Json 数据。像var foo = { ... , 'bar' = 'value', ... } 一样,您可以通过这样做for['bar'] 获得foo 值。因此,通过了解这一点,您只需执行类似

      的操作
      var arr = [];
      for (var i = 0; i < 10; i++) {
          arr.push(foo['account'+i]);
      }
      

      虽然,这与 angularjs 无关。

      【讨论】:

      • “虽然,这与 angularjs 无关”是真的,但是从角度来看,要使这个答案完整,您需要做的就是添加 $scope.myArray = arr; 。识别对象中的关键数字很聪明,但也要注意它们从 1 而不是 0 开始。此外,由于总数未知,因此您会将许多未定义的值推送到数组中。
      • 关于数字和未定义,我只是把它写成一个抽象的例子,因为我想,问题描述了抽象本身。
      猜你喜欢
      • 1970-01-01
      • 2016-12-06
      • 2017-09-01
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      相关资源
      最近更新 更多