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()

  • URL以
    /
    结尾,因此不等于不以
    /
    结尾的
    段落
    字符串

  • 您的
    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)
    (忽略大小写)的操作。