gpt4 book ai didi

javascript - JS通过多个参数过滤

转载 作者:行者123 更新时间:2023-11-30 09:13:11 25 4
gpt4 key购买 nike

我有这个 items 数组和一个 filterParams 数组。

const items = [
{
count: 1,
operation: 'Change Status',
area: 'dish_names',
days: '2019-07-17'
},
{
count: 14,
operation: 'Create',
area: 'dishes',
days: '2019-07-17'
},
{
count: 23,
operation: 'Create',
area: 'dish_names',
days: '2019-07-17'
},
{ count: 1, operation: 'Delete', area: 'dishes', days: '2019-07-17' },
{
count: 2,
operation: 'Update',
area: 'dish_names',
days: '2019-07-17'
}
]

const filterParams = [
'restaurant_menu_masters=Update',
'dish_categories=Update',
'dishes=Create'
]

我想要的是使用 filterParams 过滤 items 数组。

如果 filterParams 数组只有一个元素,我会很容易地这样做

const data = items.filter(Element=> {
let params = filterParams[0].split("=");
return Element.area === params[0] && Element.operation === params[1]
})

基本上我所做的是,获取参数字符串并用“=”将其拆分,然后检查参数的第一部分等于area,第二部分等于operation .我的问题是它在该数组中有多个过滤器参数,我想检查所有这些参数。

如何使用 JS 实现此目的?

任何帮助!

提前致谢 =)

最佳答案

检查传递的参数中的.some,在拆分时是否匹配areaoperation属性:

const items=[{count:1,operation:"Change Status",area:"dish_names",days:"2019-07-17"},{count:14,operation:"Create",area:"dishes",days:"2019-07-17"},{count:23,operation:"Create",area:"dish_names",days:"2019-07-17"},{count:1,operation:"Delete",area:"dishes",days:"2019-07-17"},{count:2,operation:"Update",area:"dish_names",days:"2019-07-17"}];

const fitlerParams = [
'restaurant_menu_masters=Update',
'dish_categories=Update',
'dishes=Create'
]

const filtered = items.filter(
({ area, operation }) => fitlerParams.some((str) => {
const [aFind, oFind] = str.split('=');
return area === aFind && operation === oFind;
})
);
console.log(filtered);

如果你只想为每个项目拆分一次,你可以提前这样做:

const items=[{count:1,operation:"Change Status",area:"dish_names",days:"2019-07-17"},{count:14,operation:"Create",area:"dishes",days:"2019-07-17"},{count:23,operation:"Create",area:"dish_names",days:"2019-07-17"},{count:1,operation:"Delete",area:"dishes",days:"2019-07-17"},{count:2,operation:"Update",area:"dish_names",days:"2019-07-17"}];

const fitlerParams = [
'restaurant_menu_masters=Update',
'dish_categories=Update',
'dishes=Create'
];
const splitParams = fitlerParams.map(str => str.split('='));

const filtered = items.filter(
({ area, operation }) => splitParams.some(([aFind, oFind]) => {
return area === aFind && operation === oFind;
})
);
console.log(filtered);

关于javascript - JS通过多个参数过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57071789/

25 4 0
文章推荐: javascript - 如何在同一条消息中发送附件和嵌入内容?
文章推荐: javascript - 构建一个接受字符并在字符为 , 时返回 true 的函数表达式。 ! ;否则返回假
文章推荐: javascript - 使用链式 JavaScript Promises 淡出/淡入图像
文章推荐: javascript - 下拉菜单的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com