gpt4 book ai didi

javascript - 使用字符串 + 字符串数组过滤对象数组

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

我正在尝试了解如何更好地使用函数式编程来实现代码的整洁。理想情况下,我想为此使用 ramda.js,但我愿意接受任何其他功能库。

我有两个参数:

  1. emailSearchTerm 字符串
  2. [{ value: 'ACTIVE'}, { value: 'INACTIVE'}] 对象数组

我有一个数组,我希望通过上面的两个参数进行过滤:

[
{
email: '123@example.com',
status: 'ACTIVE'
},
{
email: '1234@stackoverflow.com',
status: 'INACTIVE'
},
]

如何使用利用两个输入的纯函数来有效地过滤一组对象?

编辑:很好的后续问题:

现在我使用搜索词进行部分过滤:

searchTerm ? userList.filter(user => user.email.toLowerCase()
.indexOf(searchTerm.toLowerCase()) > -1) : userList

userList 表示对象数组,而我的 searchTerm 三元函数查找部分匹配项。我的目总结一下,标准是:

  1. 通过电子邮件输入到 userList 中的电子邮件属性进行部分匹配
  2. 状态完全匹配
  3. 两个参数都需要满足

最佳答案

你可以使用.filter并检查是否email属性包含 emailSearchTerm带有 .includes() 的字符串功能,并使用.some (这将测试数组中的至少一个元素是否通过了由提供的函数实现的测试。)用于通过 status 进行检查和过滤属性

const emailSearchTerm = '123@example.com';
const arrayCheck = [{ value: 'ACTIVE'}, { value: 'INACTIVE'}];

const userList = [
{
email: '123@example.com',
status: 'ACTIVE'
},
{
email: '1234@stackoverflow.com',
status: 'INACTIVE'
},
]

const pureFunction = (string, arrayCheck, data) =>
data.filter(item =>
item.email.includes(string)
&& arrayCheck.some(obj => obj.value === item.status));

console.log(pureFunction(emailSearchTerm, arrayCheck, userList));

编辑

我的代码已更新,我在纯函数中添加了过滤器函数,因此您可以将它用作具有与现在相同数据类型的纯函数

关于javascript - 使用字符串 + 字符串数组过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53083831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com