如何使用Angular.js / Javascript检查数组中是否存在密钥

时间:2016-05-26 10:12:10

标签: javascript arrays angularjs

我需要一个帮助。我有一个包含json数据的数组。我需要使用Javascript / Angular.js检查该数组中是否存在任何给定的键。我正在解释下面的数组。

var arr = [{
    'category': 1,
    'subcategory': 2,
    'check': true
}, {
    'category': 1,
    'subcategory': 2
}];

您可以在上方查看1索引没有check密钥。我需要检查该密钥,以便我可以抓取check:truecheck全部。请帮帮我。

3 个答案:

答案 0 :(得分:3)

您可以使用 some() hasOwnProperty()

  

some()对数组中存在的每个元素执行一次回调函数,直到找到一个回调返回truthy值的值(转换为布尔值时变为true的值)。如果找到这样的元素,some()会立即返回true。否则,some()返回false。仅为已分配值的数组的索引调用回调;对于已删除的索引或从未分配过值的索引,不会调用它。 ( Taken from here

var arr = [{
  'category': 1,
  'subcategory': 2,
  'check': true
}, {
  'category': 1,
  'subcategory': 2
}];

var key='check';

var res = arr.some(function(v) {
  return v.hasOwnProperty(key);
});

console.log(res);

旧浏览器check polyfill option of some method

如果您想获取具有该属性的值或对象,请使用 find()

var arr = [{
  'category': 1,
  'subcategory': 2,
  'check': true
}, {
  'category': 1,
  'subcategory': 2
}];

var key = 'check';

var res = arr.find(function(v) {
  return v.hasOwnProperty(key);
});

console.log(res);

对于较旧的浏览器,请检查polyfill option of find method

或者使用简单的for循环

var arr = [{
  'category': 1,
  'subcategory': 2,
  'check': true
}, {
  'category': 1,
  'subcategory': 2
}];
var chk = 0;

for (var i = 0; i < arr.length; i++) {
  if (arr[i].check == true) {
    chk = 1;
    break;
  }
}

console.log(chk);

答案 1 :(得分:0)

正如@PranavCBalan所说,你可以使用方法hasOwnProperty()。

我建议你看一下Lodash。您可以找到许多实用程序来解决代码中可能需要的典型检查或功能。

答案 2 :(得分:0)

试试这个

 angular.forEach(arr,function(value,key){
      if(value.check == true)
        value.check = 1;
       else if(value.check == undefined)
             value.check = 0;
   })

&#13;
&#13;
var app = angular
  .module('MyApp', [
  ])
.controller('Main', ['$scope', function ($scope) { 
  
      $scope.arr = [
                {
                  'category': 1,
                  'subcategory': 2,
                  'check': true
                },
                {
                  'category': 1,
                  'subcategory': 2
                }
              ];
      angular.forEach($scope.arr,function(value,key){
      if(value.check == true)
        value.check = 1;
       else if(value.check == undefined)
             value.check = 0;
       })
}])
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
 <div class="main-content" ng-app="MyApp" ng-controller="Main">
     <pre>{{arr|json}}</pre>
</div>
&#13;
&#13;
&#13;