嗨,我有类似的东西效果很好:
const handleFavour = () => {
const { developers } = state;
const results = developers.filter(list =>
list.uid.includes("authid")
);
setSearchResults(results);
console.log(results);
};
但是如果我想使用具有许多authid的另一个对象或数组进行搜索,那么现在有了“ authid”的身份,我该如何进行搜索?搜索很长时间后找不到任何东西。
答案 0 :(得分:2)
如果要检查数组中的任何元素是否与另一个数组中的任何元素匹配,可以将当前解决方案与.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
,通常我建议使用严格相等运算符(===
)比较字符串,除非您实际允许部分匹配,但我猜这种情况下您不会。