javascript - 检查对象中是否只有一个数组有值

标签 javascript arrays typescript object

我正在尝试检查一个数组以查看是否只有一个元素具有数据。例如,这是我的数组:

playersByGender = {
  mens: [],
  womens: [],
  other: []
};

这些的任何组合都可以有数据,也可以只有一个。如果只填写了一项,我将如何检查所有三项并返回 bool 值?

我考虑过使用 foreach,但你无法在对象上执行此操作。

任何帮助都会很棒,谢谢!

最佳答案

迭代对象的keysArray#reduce ,对于每个长度 > 0 的数组,将 1 添加到 sum 中。比较最终的总和以获得 bool 答案。

const playersByGender = {
  mens: [],
  womens: [1, 2],
  other: []
};

const onlyOne = (obj) => Object.keys(obj).reduce((sum, k) => obj[k].length > 0 ? sum + 1 : sum, 0) === 1;

console.log(onlyOne({
  mens: [],
  womens: [1, 2],
  other: []
}));

console.log(onlyOne({
  mens: [],
  womens: [1, 2],
  other: [1]
}));

关于javascript - 检查对象中是否只有一个数组有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48389282/

相关文章:

javascript - 字符串与字符串枚举不兼容

c# - 客户端 : if textbox1 and textbox 2 set counter++

java - 根据文本文件中的名称创建电子邮件地址

javascript - 如何在数据库中保存正确的时间?

javascript - 从 TypeScript 访问 JavaScript "this"

javascript - 使用 AngularJS 将数据库中出现的 HTML 渲染到 View 中

javascript - 父模块作为依赖

java - 反转数组的递归方法的时间复杂度

javascript - _ 在这个过滤器回调中是什么意思?

angular - 具有下拉功能的 Typeahead ng2-bootstrap