2016-05-26 32 views
0

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

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

可以上述检查1指数没有check key.I需要检查的关键,这样我可以取check:truecheck没有出席all.Please帮助我。

+2

'object.check? object.check:'404:not found'' – Tushar

回答

3

可以使用some()hasOwnProperty()

一些()一次执行回调函数对于每个存在于阵列中元件,直到它找到一个其中回调返回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);

+0

['Array#find'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find) – Tushar

+0

@ Pranav C Balan:我该如何检查循环内部。如果chcek键不存在,我需要检查'check == true' {chk = 1} chk = 0。 – subhra

+0

@Tushar:如果他想要查找对象'find()',可以使用,谢谢并回复更新:) –

0

正如@PranavCBalan说,你可以使用的方法hasOwnProperty()。我建议你看看Lodash。您可以找到许多解决代码中可能需要的典型检查或功能的实用程序。

+0

https://lodash.com/docs#has,http://underscorejs.org/#has – GingerPlusPlus

0

试试这个

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

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; 
 
     }) 
 
}])
<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>

相关问题