Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较两个对象的JavaScript(ReactJS)_Javascript_Arrays_Reactjs_Object_Foreach - Fatal编程技术网

比较两个对象的JavaScript(ReactJS)

比较两个对象的JavaScript(ReactJS),javascript,arrays,reactjs,object,foreach,Javascript,Arrays,Reactjs,Object,Foreach,我有一个用户对象: const data = [ { name: "John", lastName: "Doe", email: "stefa@gmail.com", password: "123", following: [{ id: "113"}, { id: "111" } }], id: "112", }, { name:

我有一个用户对象:

const data = [
{
  name: "John",
  lastName: "Doe",
  email: "stefa@gmail.com",
  password: "123",
  following: [{ id: "113"}, { id: "111" } }],
  id: "112",
},
{
  name: "Jane",
  lastName: "Doe",
  email: "dusica@gmail.com",
  password: "123",
  following: [{ id: "112" }],
  id: "113",
},
{
  name: "Mark",
  lastName: "Twain",
  email: "marko@gmail.com",
  password: "123",
  following: [],
  id: "111",
},
];
正如您所看到的,所有用户都有一个名为“following”的数组,该数组包含用户跟随的用户id。我想访问“following”数组,找出哪些用户没有被跟踪。假设我们想检查第一个用户johndoe的id=“112”的“following”数组

const followers=[];
让建议=null;
props.users.forEach((用户)=>{
如果(user.id=='112'){
user.following.forEach((项目)=>{
推送(物品);
});
}
});
followers.map((项目)=>{
建议=道具.用户.地图((用户)=>{
if(user.id!==item.id&&user.id!==112){
console.log(item.id);
归还某物;
}
});
});

我试过这样的方法,但结果不是我所期望的。正如我所说的,我希望返回未被跟踪的用户并呈现它们,因为我希望它们可见,以便用户可以跟踪它们。我希望我可以理解。谢谢。

这是一个负面比较。 因此,您希望筛选出用户正在跟踪的所有用户。 您可以遍历每个用户,并将其与以下数组进行比较。如果以下数组包含该用户,则不显示该用户

 const notFollowing = allUsers.filter(user => 
     !currentUser.following.some(({ id }) => id === user.id)
 );

这是一个负面的比较。 因此,您希望筛选出用户正在跟踪的所有用户。 您可以遍历每个用户,并将其与以下数组进行比较。如果以下数组包含该用户,则不显示该用户

 const notFollowing = allUsers.filter(user => 
     !currentUser.following.some(({ id }) => id === user.id)
 );

您可以将用户的id(后跟至少一个其他用户)放入
映射
中,然后只需迭代
数据
数组,查看当前用户的id是否在该
映射
中。它比获取一个用户id,然后在
数据
数组中的其他用户对象的
后面的
数组中搜索它更有效。您可以放置用户id,这些id后面至少有一个其他用户,在
映射中
,然后只需迭代
数据
数组,查看当前用户的id是否在该
映射中。它比获取一个用户id然后在
数据
数组中的其他用户对象的
后面的
数组中搜索它更高效。我完全忘记了filter()方法。再次感谢!非常感谢。我完全忘记了filter()方法。再次感谢!