使用另一个对象在React中搜索对象

时间:2019-11-12 22:06:18

标签: javascript reactjs

嗨,我有类似的东西效果很好:

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

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

1 个答案:

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