AngularJs - 检查数组对象中是否存在值

新手上路,请多包涵
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

原文由 Kunal arora 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 794
2 个回答

您可以使用 Array#some 并检查 in 运营商。

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

原文由 Nina Scholz 发布,翻译遵循 CC BY-SA 3.0 许可协议

不同的方法来做到这一点:

  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. 使用 Array 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.");
}

原文由 Rohìt Jíndal 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题