javascript - 使用javascript根据条件将数组拆分为两个
问题描述
我有一个像下面这样的对象数组。
[
{
product_id: 4,
product_name: "Samsung",
category_name: "Tv and home appliance",
is_Available: 1
},
{
product_id: 8,
product_name: "Apple",
category_name: "Home gadgets",
is_Available: 1
},
{
product_id: 9,
product_name: "Verifone",
category_name: "Electronics",
is_Available: 0
}
]
我想根据is_Available标志值将此数组拆分为两个。所以我确实喜欢使用reduce。
const formmattedResponse = data.reduce((arr,el) => {
if(el.is_Available === 1) {
arr.push({...el});
}
return arr;
},[]);
但是,我需要基于上述数据数组的这种类型的格式化数据,如下所示
{
availableData: [{
product_id: 4,
product_name: "Samsung",
category_name: "Tv and home appliance",
is_Available: 1
},
{
product_id: 8,
product_name: "Apple",
category_name: "Home gadgets",
is_Available: 1
}
],
notAvailableData: [{
product_id: 9,
product_name: "Verifone",
category_name: "Electronics",
is_Available: 0
}
]
}
解决方案
您可以使用一个数组并根据它们的可用性通过单个循环推送对象。
const
data = [{ product_id: 4, product_name: "Samsung", category_name: "Tv and home appliance", is_Available: 1 }, { product_id: 8, product_name: "Apple", category_name: "Home gadgets", is_Available: 1 }, { product_id: 9, product_name: "Verifone", category_name: "Electronics", is_Available: 0 }],
result = data.reduce((r, o) => {
r[o.is_Available ? 'availableData' : 'notAvailableData'].push(o);
return r;
}, { availableData: [], notAvailableData: [] });
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- makefile - 输入包装foreach的自定义定义后如何扩展变量?
- python - 如何使用 Django 模型和管理器从 PostgreSQL 查询整个数据集并使用 Ajax 渲染前端
- python - 如何计算两个日期列之间的时间差
- javascript - 使用 Spring Boot 构建短信和视频通话应用程序
- python - 在一行中关闭 xml 标记
- amazon-web-services - 了解 AWS ECS 中的 CPU 单元
- c++ - 如何进行参数包的分组或成对折叠?
- c# - 如何在 KeyValuePair 列表中获取对象的值
- neo4j - NEO4J - 匹配可能存在或不存在中间节点的路径
- node.js - 错误:ENOENT:没有这样的文件或目录,打开 '../test/testFiles/shadab.jpeg' 测试用例以使用 chai 上传文件