代码如下,有没有方法可以动态改变filter中if中的判断内容,根据filterObj中所包含的元素内容改变而改变?
<!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个回答
test
2024-07-08
const newlist = list.filter((item) => {
return Object.keys(filterObj).every(key => item[key].indexOf(filterObj[key]) !== -1)
});
console.log(newlist);
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容