【发布时间】:2018-10-02 08:03:27
【问题描述】:
我需要根据多个值过滤一些数据。 Language、title 和 slug
[
{
de: "4567uy55",
en: "654321",
lang: [
{
id: "654321",
language: "English",
title: "Title1"
},
{
id: "4567uy55",
language: "German",
title: "Title2"
}
],
slug: 'some-slug'
},
...
]
我现在返回的所有对象都包含一个或部分过滤器(如果标题是 This is a title,则单词 this 应该匹配),但我需要返回包含所有这些过滤器的对象。
我使用对象 flattner 只是为了获取一个对象中的所有属性和值,但我无法让它以我需要的方式过滤。
multiFilter = (arr, filters) => {
console.log(filters)
console.log(arr)
let newArray = []
for (let c of arr) {
let flatCourse = flatten(c)
for (let k in flatCourse) {
const keyArr = k.split('/')
const filterKeys = Object.keys(filters)
Object.keys(filters).map((key) => {
if (keyArr.includes(key)) {
const flatVal = flatCourse[k].toString().toLowerCase()
const filterVal = filters[key].toString().toLowerCase()
console.log(flatVal)
console.log(filterVal)
if (flatVal.includes(filterVal)) {
arr = []
arr.push(c)
newArray.push(c)
}
}
})
}
}
return newArray
}
过滤器如下所示:
[
language:["English"],
title: ["Some title"],
slug:["some slug"]
]
【问题讨论】:
-
你能给出一个输入和你想要的输出的具体例子吗?
-
输入是我在问题中定义的对象数组,输出是与
newArray中推送的过滤器匹配的任何对象。所以newArray应该包含匹配所有过滤器的对象。 -
按
language/lang过滤不是更好吗?
标签: javascript arrays object