javascript - 使用条件语句过滤对象数组
问题描述
我有具有以下结构的 JavaScript 对象数组:
const fruits = [{ "id": "1", "title": "Banana", "description": "1 Minute" }, { "id": "2", "title": "Apple", "description": "2 - 3 Days" }, { "id": "3", "title": "Manggo", "description": "10 - 20 Days" }, { "id": "4", "title": "Orange", "description": "10 - 20 Days" }, { "id": "5", "title": "Grape blue", "description": "10 - 20 Days" }, { "id": "6", "title": "Grape red", "description": "10 - 20 Days" }]
我想提取具有description
=“10 - 20 天”title
且不包含“葡萄”的对象
那么我的预期应该是
{ "id": "3", "title": "Manggo", "description": "10 - 20 Days" }, { "id": "4", "title": "Orange", "description": "10 - 20 Days" }
解决方案
这很简单,使用Array.protoype.filter
. 在filter
回调中,您可以使用String.protoype.includes
方法检查标题是否包含"grapes"
:
const fruits = [{
"id": "1",
"title": "Banana",
"description": "1 Minute"
},
{
"id": "2",
"title": "Apple",
"description": "2 - 3 Days"
},
{
"id": "3",
"title": "Manggo",
"description": "10 - 20 Days"
},
{
"id": "4",
"title": "Orange",
"description": "10 - 20 Days"
},
{
"id": "5",
"title": "Grape blue",
"description": "10 - 20 Days"
},
{
"id": "6",
"title": "Grape red",
"description": "10 - 20 Days"
}
];
const filteredFruits = fruits.filter(fruit => {
if (!fruit.title.toLowerCase().includes("grape")) {
if (fruit.description === "10 - 20 Days") {
return true;
}
}
return false;
});
console.dir(filteredFruits)
推荐阅读
- sql - SQL SERVER 替换空值
- flutter - SingleChildScrollView 显示白色
- javascript - 在创建 API 时修改了来自 nestjs 的 JSON 响应
- linq - LINQ 查询以获取学生课程
- apache-atlas - Apache Atlas:从 Java 客户端连接时出现 Http 503 Service Unavailable 错误
- c++ - 错误:没有匹配的函数调用 vector::push_back
- java - Jframe 将所有内容都设置在屏幕中间
- angular - 无法将从 http Get 返回的数据分配给具有相同结构的打字稿对象
- windows - libusb 读取:当输入单个 CR 时,将双 CR (0xD) 放入缓冲区
- kubernetes - 指定节点应该运行的 Pod