javascript - 如果数组中的所有对象都在属性中具有值,则返回 true

标签 javascript angularjs

我有一个对象数组,像这样:

$scope.objectArray = [
  {Title: 'object1', Description: 'lorem', Value: 57},
  {Title: 'object2', Description: 'ipsum', Value: 32},
  {Title: 'object3', Description: 'dolor', Value: 135}
]

我想检查并返回 true,如果此数组中的所有对象都在属性“value”中有一个值。

我想我可以用 forEach 循环来完成,但有没有比这更好的方法?

var isTrue = true;
angular.forEach(objectArray, function(o){
  if (!o.Value){
    isTrue = false; // change variable 'isTrue' to false if no value
  }
});

最佳答案

您可以使用 Array#everyArrow function

var isTrue = objectArray.every(obj => obj.Value);

var objectArray = [
  {Title: 'object1', Description: 'lorem', Value: 57},
  {Title: 'object2', Description: 'ipsum', Value: 32},
  {Title: 'object3', Description: 'dolor', Value: 135}
];

var isTrue = objectArray.every(obj => obj.Value);
document.body.innerHTML = isTrue;


更新:

要处理 0 值,Object#hasOwnProperty可以使用。

objectArray.every(obj => obj.hasOwnProperty('Value'))

var objectArray = [
  {Title: 'object1', Description: 'lorem', Value: 57},
  {Title: 'object2', Description: 'ipsum', Value: 32},
  {Title: 'object3', Description: 'dolor', Value: 0}
];

var isTrue = objectArray.every(obj => obj.hasOwnProperty('Value'));
document.body.innerHTML = isTrue;

关于javascript - 如果数组中的所有对象都在属性中具有值,则返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36148546/

相关文章:

angularjs - 在单个页面上制作一个应用程序的多个不同副本(AngularJS)

javascript - 在 IE8 中无法使用 document.getElementById 找到 DOM

javascript - 如何添加/更新查询字符串链接到现有 URL 的末尾

javascript - 我可以使用 jQuery Submit 提交 Razor 表单数据吗

javascript - Angularjs - 如何显示特定的 div onclick 一个特定的链接并隐藏以前的 div with ng repeat- like tabs

AngularJS 表单验证 : indicate required fields to user

angularjs - Angular Azure 移动服务客户端 API key 用法

javascript - 循环多个TD,抓取多个值,填充数组

javascript - 删除文本开头的前导点

node.js - npm start 如何在 8000 端口上运行服务器