Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用includes()搜索标记_Javascript - Fatal编程技术网

Javascript 使用includes()搜索标记

Javascript 使用includes()搜索标记,javascript,Javascript,所以我在一个使用标签作为搜索过滤器的应用程序中工作。但是,使用两个标记时无法得到结果。例如,一家名为CoffeShop的商店有两个标签“Coffee”和“Cookies”。当传递其中一个标签时,它返回咖啡店,但当传递两个标签时,它什么也不返回 我试着使用loadash和其他一些东西,但到目前为止没有一个奏效 let数组=[ { “名称”:“咖啡店”, “标签”:[ “咖啡”, “饼干”, ], }, { “名称”:“茶馆”, “标签”:[ “茶”, ], }, { “名称”:“冰淇淋店”, “

所以我在一个使用标签作为搜索过滤器的应用程序中工作。但是,使用两个标记时无法得到结果。例如,一家名为CoffeShop的商店有两个标签“Coffee”和“Cookies”。当传递其中一个标签时,它返回咖啡店,但当传递两个标签时,它什么也不返回

我试着使用loadash和其他一些东西,但到目前为止没有一个奏效

let数组=[
{
“名称”:“咖啡店”,
“标签”:[
“咖啡”,
“饼干”,
],
},
{
“名称”:“茶馆”,
“标签”:[
“茶”,
],
},
{
“名称”:“冰淇淋店”,
“标签”:[
“冰淇淋”,
]
},
]
let tags=['Coffee','Cookies']
result=array.filter(item=>item.tag.some(t=>t.includes(tags)))

console.log(result)
您需要像
标记一样操作。包括(t)
。在代码中,您刚刚颠倒了include,它应该是
Array.include(item)

let数组=[
{
“名称”:“咖啡店”,
“标签”:[
“咖啡”,
“饼干”,
],
},
{
“名称”:“茶馆”,
“标签”:[
“茶”,
],
},
{
“名称”:“冰淇淋店”,
“标签”:[
“冰淇淋”,
]
},
]
let tags=['Coffee','Cookies']
result=array.filter(item=>item.tag.some(t=>tags.includes(t)))

console.log(result)
只需反转include应该是数组。include(

let数组=[
{
“名称”:“咖啡店”,
“标签”:[
“咖啡”,
“饼干”,
],
},
{
“名称”:“茶馆”,
“标签”:[
“茶”,
],
},
{
“名称”:“冰淇淋店”,
“标签”:[
“冰淇淋”,
]
},
]
let tags=['Coffee','Cookies']
result=array.filter(item=>item.tag.some(t=>tags.includes(t)))
console.log(结果)
let数组=[
{
“名称”:“咖啡店”,
“标签”:[
“咖啡”,
“饼干”,
],
},
{
“名称”:“茶馆”,
“标签”:[
“茶”,
],
},
{
“名称”:“冰淇淋店”,
“标签”:[
“冰淇淋”,
]
},
]
const _strip=str=>str.replace(/\s/g',)
const _minimize=arr=>arr.map(t=>_strip(t.toLowerCase())
const getShopWithTags=(shops=[],tags=[])=>{
标记=_最小化(标记)
返回array.filter(({tag})=>tags.includes(…_minimize(tag)))
}
let tags=['Coffee','Cookies']
让结果=getShopWithTags(数组,标记)
console.log(结果)
标签=[“咖啡”、“饼干”、“冰淇淋”]
结果=getShopWithTags(数组,标记)
console.log(result)
问题在于,如果要在标记中查找数组,它不会自动为您检查数组中的所有值。您可以执行以下操作:

result = array.filter(item => tags.every(tag => item.tag.includes(tag)));

如果您仍然喜欢使用
array.some(func)
。您可以使用
array.filter(item=>item.tag.some(checkTag)).map(item=>item.name)
。编写一个名为
checkTag(tag)
的函数,其中包含一条语句
return tags.indexOf(tag)>-1
。有关更多详细信息,请参阅。