【发布时间】:2019-02-26 05:33:28
【问题描述】:
我有这种东西
[
{
camera_ids: "all",
camera_ids_failed: "failed",
inserted_at: "Monday, 25 Feb 2019 6:00 AM",
recipients: "junaid@evercam.io",
subject: "Your Scheduled SnapMail @ 10:59"
},
{
camera_ids: "all",
camera_ids_failed: "failed",
inserted_at: "Monday, 25 Feb 2019 6:06 AM",
recipients: "musaa@evercam.io",
subject: "Your Scheduled SnapMail @ 11:05"
}
]
我正在尝试在Vue中对这个对象进行搜索过滤,这个对象在Vue组件的数据部分设计为data: []。
我要做的是根据搜索查询更改 this.data 的值。例如,如果我的搜索字符串是jun,那么我只得到一个包含jun 的对象,我想检查这个搜索字符串到每个对象的键和值。
我试过了。
onFilterSet (filters) {
const oldData = this.data
let search = filters.search
if (search != null || search != "") {
this.data = this.data.filter((item) => {
return _.includes(item.recipients, search) || _.includes(item.camera_ids, search) || _.includes(item.camera_ids_failed, search) || _.includes(item.subject, search);
});
} else {
this.data = oldData
}
},
但这不起作用。当搜索查询再次为空时,this.data 值不会更改,也不会恢复到旧状态。请指导我。
更新:
我正在搜索任何内容,例如:搜索字符串为:jun,我想根据 camera_ids、camera_ids_failed、收件人、主题进行检查,如果其中任何一个键的值匹配 jun,它应该过滤对象并返回它。
如果第一个对象看起来像这样
[
{
camera_ids: "all",
camera_ids_failed: "failed",
inserted_at: "Monday, 25 Feb 2019 6:00 AM",
recipients: "junaid@evercam.io",
subject: "Your Scheduled SnapMail @ 10:59"
},
{
camera_ids: "all",
camera_ids_failed: "failed",
inserted_at: "Monday, 25 Feb 2019 6:06 AM",
recipients: "musaa@evercam.io",
subject: "Your Scheduled SnapMail @ 11:05"
},
{
camera_ids: "all",
camera_ids_failed: "failed",
inserted_at: "Monday, 25 Feb 2019 6:06 AM",
recipients: "hibaa@evercam.io",
subject: "Your Scheduled Junaid @ 11:05"
},
{
camera_ids: "all",
camera_ids_failed: "failed",
inserted_at: "Monday, 25 Feb 2019 6:06 AM",
recipients: "hajraa@evercam.io",
subject: "Your Scheduled SnapMail @ 11:05"
}
]
搜索值为jun
过滤后更新的对象将是
[
{
camera_ids: "all",
camera_ids_failed: "failed",
inserted_at: "Monday, 25 Feb 2019 6:00 AM",
recipients: "junaid@evercam.io",
subject: "Your Scheduled SnapMail @ 10:59"
},
{
camera_ids: "all",
camera_ids_failed: "failed",
inserted_at: "Monday, 25 Feb 2019 6:06 AM",
recipients: "hibaa@evercam.io",
subject: "Your Scheduled Junaid @ 11:05"
}
]
【问题讨论】:
-
您在 json 中搜索的值
-
我想我已经说得很清楚了,现在我再次更新了它
-
用户可以添加的任何值。如果匹配,它只是对象的键的任何值,任何键的值匹配它应该在下一个更新的对象中
-
您确定要与键匹配吗?例如,如果我输入 "camera",应该返回所有结果?
-
“键的值。不是键” ????也称为 "values" ;)
标签: javascript vue.js