首页 > 解决方案 > 使用另一个对象在 React 中搜索对象

问题描述

嗨,我有这样的东西很好用:

const handleFavour = () => {
  const { developers } = state;
  const results = developers.filter(list =>
    list.uid.includes("authid")
  );
  setSearchResults(results);
  console.log(results);
};

但是现在如果我想使用另一个具有许多 authid 的对象或数组搜索“authid”,我该如何进行搜索?搜索了很长时间后找不到任何东西。

标签: javascriptreactjs

解决方案


如果要检查数组中的任何元素是否与另一个数组中的任何元素匹配,可以将当前解决方案与.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将返回。truelist.uidallowedIds


根据您在评论中描述的情况,您似乎想要这样的东西:

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,通常我建议使用严格相等运算符 ( ===) 来比较字符串,除非您实际上想要允许部分匹配,但我猜在这种情况下您不会。


推荐阅读