簡體   English   中英

AngularJs-檢查數組對象中是否存在值

[英]AngularJs - check if value exists in array object

var SelectedOptionId = 957;

$scope.array = [{"957":"1269"},{"958":"1265"},{"956":"1259"},{"957":"1269"},{"947":"1267"}]

有沒有一種方法可以檢查這種數組對象中是否存在值。 我正在使用Angular和下划線。

我已經嘗試了所有這一切-

if ($scope.array.indexOf(SelectedOptionId) === -1) {console.log('already exists')}

console.log($scope.array.hasOwnProperty(SelectedOptionId)); //returns false

console.log(_.has($scope.array, SelectedOptionId)); //returns false 

您可以使用Array#some並使用in運算符進行檢查。

exists = $scope.array.some(function (o) {
    return SelectedOptionId in o;
});

檢查一下

function checkExists (type) {
   return $scope.array.some(function (obj) { 
    return obj === type;
  }
}

var chkval=checkExists("your value")

您可以為此使用過濾器 以下代碼應返回具有匹配結果的輸出數組(如果存在),否則它將返回一個空數組:

 var array = [{"957":"1269"},{"958":"1265"},{"956":"1259"},{"957":"1269"},{"947":"1267"}]; var SelectedOptionId = 957; var result = array.filter( function(item) {return item[SelectedOptionId]} ) console.log(result); 

對於您的輸入,它返回:

[ { '957': '1269' }, { '957': '1269' } ]

嘗試這個:

if($scope.array[SelectedOptionId] || _.includes(_.values($scope.array, SelectedOptionId))) { }

那應該既包含鍵又包含值。

 let selectedOptionId = "957"; let array = [{"957":"1269"},{"958":"1265"},{"956":"1259"},{"957":"1269"},{"947":"1267"}]; let filtered = array.filter(function(element){ return Object.keys(element)[0] === selectedOptionId; }); console.log(filtered); 

console.log(_.some($scope.array, function(o) { return _.has(o, "957"); }));

使用下划線

您可以使用in運算符或hasOwnProperty函數來執行此操作,以檢查給定數組內的對象中是否存在鍵。

您嘗試使用hasOwnProperty函數的方法不起作用,因為您直接在數組上檢查它,而不是檢查數組中的項目。

檢查以下代碼段。

 angular .module('demo', []) .controller('HomeController', DefaultController); function DefaultController() { var vm = this; vm.items = [{ "957": "1269" }, { "958": "1265" }, { "956": "1259" }, { "957": "1269" }, { "947": "1267" }]; var key = '957'; var isExists = keyExists(key, vm.items); console.log('is ' + key + ' exists: ' + isExists); function keyExists(key, items) { for (var i = 0; i < items.length; i++) { // if (key in items[i]) { if (items[i].hasOwnProperty(key)) { return true; } } return false; } } 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="demo"> <div ng-controller="HomeController as home"> {{home.items | json}} </div> </div> 

不同的方式來做到這一點:

  1. 使用Object hasOwnProperty()方法。

工作演示:

 var SelectedOptionId = 957; var arrayObj = [{"957":"1269"},{"958":"1265"},{"956":"1259"},{"957":"1269"},{"947":"1267"}]; function checkOption(key) { for(var i in arrayObj) { if(arrayObj[i].hasOwnProperty(key) == true) { return key+" exists."; } else { return key+" Not exists."; } } }; console.log(checkOption(SelectedOptionId)); // 957 exists. 

  1. 使用數組filter()方法。

工作演示:

 var SelectedOptionId = 957; var arrayObj = [{"957":"1269"},{"958":"1265"},{"956":"1259"},{"957":"1269"},{"947":"1267"}]; var result = arrayObj.filter(function(elem) { return elem[SelectedOptionId] }); if(result == '') { console.log(SelectedOptionId+" not exists."); } else { console.log(SelectedOptionId+" exists."); } 

  1. 使用Nina Scholz建議的Array some()方法。

工作演示:

 var SelectedOptionId = 957; var arrayObj = [{"957":"1269"},{"958":"1265"},{"956":"1259"},{"957":"1269"},{"947":"1267"}]; var result = arrayObj.some(function (o) { return SelectedOptionId in o; }); if(result == '') { console.log(SelectedOptionId+" not exists."); } else { console.log(SelectedOptionId+" exists."); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM