javascript - 使用另一个对象在 React 中搜索对象
问题描述
嗨,我有这样的东西很好用:
const handleFavour = () => {
const { developers } = state;
const results = developers.filter(list =>
list.uid.includes("authid")
);
setSearchResults(results);
console.log(results);
};
但是现在如果我想使用另一个具有许多 authid 的对象或数组搜索“authid”,我该如何进行搜索?搜索了很长时间后找不到任何东西。
解决方案
如果要检查数组中的任何元素是否与另一个数组中的任何元素匹配,可以将当前解决方案与.some
.
const handleFavour = () => {
const allowedIds = ['id1', 'id2'];
const { developers } = state;
const results = developers.filter(list =>
list.uid.some(uid => allowedIds.includes(uid))
);
setSearchResults(results);
console.log(results);
};
如果 中的任何元素也存在于 中,则此处.some
将返回。true
list.uid
allowedIds
根据您在评论中描述的情况,您似乎想要这样的东西:
const handleFavour = () => {
const users = [{ auth: 'id1' }, { auth: 'id2' }];
const { developers } = state;
const results = developers.filter(list =>
users.some(user => user.auth === list.uid)
);
setSearchResults(results);
console.log(results);
};
我最初认为list.uid
是一个数组,因为您使用的是.includes
,通常我建议使用严格相等运算符 ( ===
) 来比较字符串,除非您实际上想要允许部分匹配,但我猜在这种情况下您不会。
推荐阅读
- javascript - 使 intro.js 工具提示向右强制并使页面滚动
- codeigniter - 如何在where子句codeigniter中使用数组
- jquery - 在控制器中解析二维数组
- python - 根据索引值在python中加入2个csv文件
- python-2.7 - SSL 连接错误:SSL 证书验证失败 (2026) (SQLDriverConnect) pyodbc?
- scala - 如何使用@RunWith(classOf[JUnitRunner]) 升级到 JUnit5 进行 Scala 测试?
- python - ttest_ind 给出 TypeError: unsupported operand type(s) for /: 'str' and 'int'
- javascript - React Consumer Context 无法设置状态 - 前端大师介绍 React 课程 v4 重构
- maven - Swagger CodeGen 依赖问题
- sorting - 如何仅根据第一列对行进行排序?