![](/img/trans.png)
[英]Check if a key value already exists in a multidimensional array object in 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>
不同的方式來做到這一點:
工作演示:
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.
工作演示:
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."); }
工作演示:
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.