代码如下,有没有方法可以动态改变filter中if中的判断内容,根据filterObj中所包含的元素内容改变而改变?

作者站长头像
站长
· 阅读数 4
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态改变if中的判断内容</title>
</head>

<body>
    <script>
        let list = [
            {
                name: '孙悟空',
                phone: '13896965655'
            },
            {
                name: '爱米莉娅',
                phone: '12589633654'
            },
            {
                name: '雷姆',
                phone: '13589633684'
            },
            {
                name: '孙二娘',
                phone: '13564236966'
            }
        ]

        //其中filterObj中的元素会动态改变,有没有一种方法让filter中if判断的内容也动态的改变
    //  1.   let filterObj = {
    //         name: '孙',

    //     }
    //     let newlist = []
    //     list.filter((item) => {
    //         if ((item.name.indexOf(filterObj.name) !== -1)) {
    //             newlist.push(item);
    //         }
    //     });
    //     console.log(newlist)

    //  2.   let filterObj = {
    //        phone:'1'

    //     }
    //     let newlist = []
    //     list.filter((item) => {
    //         if ((item.phone.indexOf(filterObj.phone) !== -1)) {
    //             newlist.push(item);
    //         }
    //     });
    //     console.log(newlist)

//3.
        // let filterObj = {
        //     name: '孙',
        //     phone: '1'
        // }
        // let newlist = []
        // list.filter((item) => {
        //     if ((item.name.indexOf(filterObj.name) !== -1) && (item.phone.indexOf(filterObj.phone) !== -1)) {
        //         newlist.push(item);
        //     }
        // });
        // console.log(newlist)

        //以上合成一块代码如何编写



    </script>

</body>

</html>
回复
1个回答
avatar
test
2024-07-08
const newlist = list.filter((item) => {
  return Object.keys(filterObj).every(key => item[key].indexOf(filterObj[key]) !== -1)
});

console.log(newlist);
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容