javascript - 从具有特定 ID 的对象的数组生成新数组
问题描述
我们在我们的项目中使用 ramda,我确实有这个数据结构,我需要做以下事情:
对于每个集合,检查它们submittedCheckboxes
是否在其中并将它们隔离到新数组中,这样我就可以知道valid_amount
设置为的复选框的数量true
是否未超过。
在下面的示例中,它应该抛出指示集合#1 的 id 的错误,因为这两个submittedCheckboxes
具有value: true
集合指定的位置valid_amount: [1]
,但集合 #2 应该没问题,因为 valid_amount 选项是 1 或 2,( valid_amount: [1,2]
)。最后一组应该接受属于它的每一个选中的复选框。
const sets = [
{id: 1, checkboxes: [{id: 10}, {id: 20}], valid_amount: [1]},
{id: 2, checkboxes: [{id: 30}, {id: 40}], valid_amount: [1,2]},
{id: 3, checkboxes: [{id: 50}, {id: 60}, {id: 70}, {id: 80}], valid_amount: [1,2,3,4]},
];
const submittedCheckboxes = [
{id: 10, value: true},
{id: 20, value: true},
{id: 30, value: true},
{id: 40, value: true},
{id: 50, value: true},
{id: 60, value: false},
{id: 70, value: true},
{id: 80, value: false},
];
解决方案
const sets = [
{id: 1, checkboxes: [{id: 10}, {id: 20}], valid_amount: [1]},
{id: 2, checkboxes: [{id: 30}, {id: 40}], valid_amount: [1,2]},
{id: 3, checkboxes: [{id: 50}, {id: 60}, {id: 70}, {id: 80}], valid_amount: [1,2,3,4]},
];
const submittedCheckboxes = [
{id: 10, value: true},
{id: 20, value: true},
{id: 30, value: true},
{id: 40, value: true},
{id: 50, value: true},
{id: 60, value: false},
{id: 70, value: true},
{id: 80, value: false},
];
console.log(sets.map(valid));
function valid(set) {
return set.valid_amount.includes(set.checkboxes.filter(checkbox => submittedCheckboxes.find(set=>set.id === checkbox.id).value).length)
}
推荐阅读
- python - 从 python 安装路径中排除测试文件夹
- python - Pandas df 根据整数索引列表重新排序行和列
- mysql - 如何在mysql中找到每列的值数与主键的比率?
- angular - CSP 阻止来自 S3 的图像
- odoo - Odoo 用户和管理员在同一个组
- azure - 激活 RBAC 和 AAD 集成后,如何授予服务主体对 AKS API 的访问权限?
- spring - 异常:rg.springframework.cloud.gcp.data.datastore.core.mapping.DatastoreDataException:无法将类 PageRequest 转换为 Datastore
- elasticsearch - ElasticSearch 异常是什么意思:“所有分片失败”和“未找到 id 的搜索上下文”?
- python - 使用 Pandas 提取配置文件(看起来像 K/V 但不是)
- python - 如何比较两个列表中的项目并根据结果创建一个新列表?