Javascript 多条件滤波器阵列
我有一个对象数组,我想在多种条件下过滤它们。如果Javascript 多条件滤波器阵列,javascript,arrays,Javascript,Arrays,我有一个对象数组,我想在多种条件下过滤它们。如果element.state===false或element.url包含特定或多个字符串 我尝试使用某个字符串进行筛选,但是,我得到了一个空数组。下面是我的例子: const attr=['Product 1','Product 2'] 常数res=[] for(设i=0;i{ el.state===false&&el.url===para }) log(`Initial state:${currentState.length}`) 而(curre
element.state===false
或element.url
包含特定或多个字符串
我尝试使用某个字符串进行筛选,但是,我得到了一个空数组。下面是我的例子:
const attr=['Product 1','Product 2']
常数res=[]
for(设i=0;i{
el.state===false&&el.url===para
})
log(`Initial state:${currentState.length}`)
而(currentState.length>0){
currentState[0]。状态=真
currentState=res.filter(el=>el.state===false)
log(`Set state为true for${JSON.stringify(currentState[0])}`)
console.log(currentState.length)
}
3月月日日日日日日日日方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方####')
/*
* ################
*#需要“类别”和“所有权”的输出
* ################
* {
*属性:“产品1”,
*url:'类别/',
*国家:对
* },
* {
*属性:“产品2”,
*url:'类别/',
*国家:对
* },
* {
*属性:“产品1”,
*url:“所有权/”,
*国家:对
* },
* {
*属性:“产品2”,
*url:“所有权/”,
*国家:对
* }
*/
您正在设置para='category'
,但url是'category/'
,因此过滤不会返回任何内容
此外,在函数中:
let currentState = res.filter((el) => { // <- removed the second element "para" because it will hold the index of el in res, which is not what you intended.
el.state === false && el.url.indexOf(para) > -1; // check if it's a substring
})
let currentState=res.filter((el)=>{//-1;//检查它是否是子字符串
})
名称para
有误导性:第二个参数是元素的索引,它“隐藏”了您在外部声明的常量para
。几个问题:
filter()
/
结尾,因此不等于不以/
结尾的段落
字符串filter()
正在使用参数名para
,该参数还将para
变量隐藏在其外部const para='category'
让currentState=res.filter((el)=>{
返回el.state===false&&el.url.startsWith(段落)
})
console.log(当前状态)
常量属性=['产品1','产品2']
常数res=[]
for(设i=0;i
我在您的res.filter
语句中看到了一些东西。首先,当使用带有花括号的lambda函数时,必须显式返回。所以(el,para)=>{return el.state===false/*etc...*/}
。或者扔掉那些花括号。其次,el.url==para
仅对精确匹配为真。如果您想执行任何包含“category”的操作,您可能需要执行类似于/category/.test(el.url)
(区分大小写)或/category/i.test(el.url)
(忽略大小写)的操作。