2016-05-26 14 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 iがcheck:trueまたはcheckが私を助けてall.Pleaseに存在しないフェッチできるように、そのキーをチェックする必要はありませんがあります。

+2

'object.checkを試してみてください? object.check: '404:見つからない' – Tushar

答えて

3

を使用できsome()hasOwnProperty()

いくつかの()は、となるコールバックがtruthy値を返す一方(値が見つかるまで、アレイ内の各要素の存在のために一度コールバック関数を実行しますBooleanに変換されたときはtrue)。そのような要素が見つかった場合、some()は直ちにtrueを返します。それ以外の場合、some()はfalseを返します。コールバックは、値が割り当てられた配列のインデックスに対してのみ呼び出されます。削除されたか、または値が割り当てられていない索引に対しては呼び出されません。古いブラウザcheck polyfill option of some methodについては


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);
Taken from here

。あなたが取得したい場合は


値やプロパティを持つオブジェクトは、古いブラウザチェックpolyfill option of find 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);


を使用しています。ループ

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キーがchk = 0でない場合、 'check == true' {chk = 1}をチェックする必要があります。 – 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>

関連する問題