javascript - 如何在另一个对象中检查至少一个对象
问题描述
我需要验证表单域。
这是categories
我表单中的字段。
categories = {
category1: [
{ id: 1, quantity: 0 },
{ id: 2, quantity: 0 }
],
category2: [
{ id: 3, quantity: 0 },
{ id: 4, quantity: 0 }
],
category3: [
{ id: 5, quantity: 0 },
{ id: 6, quantity: 0 }
]
}
这就是我检查AT LEAST ONE数组元素是否通过EACH category
内的测试的方式。
for (const category in categories) {
let theOne = categories[category].some(product => product.quantity !== 0);
}
这样,如果EACHquantity
中至少有一个值为 1,则该表单将有效。 category
// I DONT WANT THIS
categories = {
category1: [
{ id: 1, quantity: 1 }, // at least one quantity value is 1
{ id: 2, quantity: 0 }
],
category2: [
{ id: 3, quantity: 1 }, // at least one quantity value is 1
{ id: 4, quantity: 0 }
],
category3: [
{ id: 5, quantity: 1 }, // at least one quantity value is 1
{ id: 6, quantity: 0 }
]
}
// I NEED THIS
categories = {
category1: [
{ id: 1, quantity: 1 }, // at least one quantity value is 1
{ id: 2, quantity: 0 }
],
category2: [
{ id: 3, quantity: 0 }, // not needed
{ id: 4, quantity: 0 }
],
category3: [
{ id: 5, quantity: 0 }, // not needed
{ id: 6, quantity: 0 }
]
}
怎么可能使它至少为一个工作category
?
解决方案
那就是检查它们:
const categories = {
category1: [{ id: 1, quantity: 0 }],
category2: [{ id: 2, quantity: 1 }],
category3: [{ id: 3, quantity: 0 }]
};
const didIPass = Object.values(categories).some((category) => {
return category.some((subCategory) => subCategory.quantity !== 0);
});
console.log('Did I pass?', didIPass);
那就是具体检查每个内部:
Object.entries(categories).forEach((entry) => {
const key = entry[0];
const value = entry[1];
const didIPass = value.some((subCategory) => subCategory.quantity !== 0);
console.log(`Did ${key} pass? ${didIPass}`);
});
将产生输出:
Did I pass? true
Did category1 pass? false
Did category2 pass? true
Did category3 pass? false
推荐阅读
- scala - 如何正确处理 Future.sequence 中的个别异常?
- kentico - 如何在每个站点中创建 kentico 站点特定的资源字符串?
- r - 仅最后连续列的缺失值替换
- php - 将注入对象作为参数提供给服务
- ruby-on-rails - Time.current.tap{|t| t.change hour: 10 } 在 Rails 4.2 中不起作用
- c++ - 如何创建geometry_msgs::Point?
- python - matplotlib 只显示空图,如何解决?
- excel - VBA - Excel - 需要一个代码来根据日历返回一系列值
- angular - 升级到 21.0.1 后的问题
- r - R中的POSXlt和filter()