返回AngularJS中数组的键

时间:2016-11-17 08:47:03

标签: javascript angularjs arrays for-loop

我有一个问题的解决方案,但我不知道它是否存在更好的解决方案。

以下我实施了:

查看:

<md-list>
   <md-list-item>
      <span ng-repeat="item in ::items track by $index" flex="auto">
          {{::item}}
      </span>
      <md-divider></md-divider>
   </md-list-item>
</md-list>

控制器:

CrudSvc.GetAll().$promise.then(
  function (res) {
     $scope.items = GetKeyForTitle(res);
  },
  function (err) {
     //err code...
  }
);

function GetKeyForTitle(data) {
   var arrItems = [];
   var resData = data[0];

   angular.forEach(resData, function (val, key) {
       arrItems.push(key);
   });

   return arrItems;
}

JSON数据定义简单:

[
  {
    "NAME": "John Doe",
    "AGE": 25,
    "CITY": "New York",
    "COUNTRY": "USA"
  },...
]

对于我的解决方案,我使用data[0]只给我第一个数据,否则我总是得到相同的键,我只需要一次键。

2 个答案:

答案 0 :(得分:3)

使用Object.keys()

&#13;
&#13;
var data = [{
  "NAME": "John Doe",
  "AGE": 25,
  "CITY": "New York",
  "COUNTRY": "USA"
}, {
  "NAME": "John Doe",
  "AGE": 25,
  "CITY": "New York",
  "COUNTRY": "USA"
}, {
  "NAME": "John Doe",
  "AGE": 25,
  "CITY": "New York",
  "COUNTRY": "USA"
}, {
  "NAME": "John Doe",
  "AGE": 25,
  "CITY": "New York",
  "COUNTRY": "USA"
}, {
  "NAME": "John Doe",
  "AGE": 25,
  "CITY": "New York",
  "COUNTRY": "USA"
}]
var arrItems = Object.keys(data[0]);
console.log(arrItems);
&#13;
&#13;
&#13;

https://repl.it/E0lI

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

答案 1 :(得分:0)

您可以使用

var allKeys = [];
for(var key in myObject) allKeys.push(k);

console.log("Keys " + allKeys.length + " keys: " + allKeys);

或者如果你使用Lodash /下划线,它会让你的生活变得更加轻松。