Javascript 对于在对象数组中的每个对象中找到的值,返回true

Javascript 对于在对象数组中的每个对象中找到的值,返回true,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我正试图在我的React应用程序中实现一个likes系统,但为此,我需要知道currentLoggedIn用户以前喜欢什么帖子,这样我就可以显示一个不喜欢的图标,反之亦然 我首先想到的是创建一个小函数,它接收两个参数,loggedinuser和postId。这就是功能: const clickLike = (userId, postId) => { const match = timeline && timeline.map(

我正试图在我的React应用程序中实现一个likes系统,但为此,我需要知道currentLoggedIn用户以前喜欢什么帖子,这样我就可以显示一个不喜欢的图标,反之亦然

我首先想到的是创建一个小函数,它接收两个参数,loggedinuser和postId。这就是功能:

const clickLike = (userId, postId) => {
    const match =
      timeline &&
      timeline.map(
        post =>
          post._id === postId && post.likes.filter(user => user === userId)
      );
    return match;
  };
前面的代码应该映射到所有post,如果loggedIn用户已经在postd对象上,则返回true。下面是我的JSON的样子:

"data": [
  {
      "status": "published",
      "_id": "5e5dcfc65104666e70558110",
      "text": "Mierda!",
      "user": {
          "_id": "5e0925629648903308163aeb",
          "username": "GodHimself",
          "avatar": "//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm",
          "bio": "I'm not God",
          "id": "5e0925629648903308163aeb"
      },
      "likes": [
          {
              "_id": "5e76bc5fd3266e125c2dc4b9",
              "user": "5e0925629648903308163aeb"
          },
      ],
      "id": "5e5dcfc65104666e70558110"
  },
  {
      "status": "published",
      "_id": "5e4a08dc4c1f0d2394f28d8e",
      "text": "Initial D!",
      "user": {
          "_id": "5e0925629648903308163aeb",
          "username": "GodHimself",
          "avatar": "//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm",
          "bio": "I'm not God",
          "id": "5e0925629648903308163aeb"
      },
      "likes": [],
      "id": "5e4a08dc4c1f0d2394f28d8e"
  },
  {
      "status": "published",
      "_id": "5e4a08584c1f0d2394f28d8d",
      "text": "Berserk Bois!",
      "user": {
          "_id": "5e0925629648903308163aeb",
          "username": "GodHimself",
          "avatar": "//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm",
          "bio": "I'm not God",
          "id": "5e0925629648903308163aeb"
      },
      "likes": [
          {
              "_id": "5e4b5c889861ad1cf8b67bbb",
              "user": "5e0925629648903308163aeb"
          },
          {
              "_id": "5e4b5ca59861ad1cf8b67bbc",
              "user": "5e0925629648903308163aeb"
          }
      ],
      "id": "5e4a08584c1f0d2394f28d8d"
  }
]
到目前为止,代码在任何一篇帖子中都会返回true,即使是那些没有收到类似消息的人

任何帮助都将不胜感激。

使用

const数据=[
{
状态:“已发布”,
_id:“5e5dcfc65104666e70558110”,
文字:“米尔达!”,
用户:{
_id:“5e0925629648903308163aeb”,
用户名:“上帝自己”,
化身:
“//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm”,
传记:“我不是上帝”,
id:“5e0925629648903308163aeb”
},
喜欢:[
{
_id:“5e76bc5fd3266e125c2dc4b9”,
用户:“5e0925629648903308163aeb”
}
],
id:“5e5dcfc65104666e70558110”
}
];
const clickLike=(用户ID,postId)=>{
返回数据.some(x=>x.\u id==postId&&x.likes.some(y=>y.\u id==userId));
};
console.log(
单击类似(“5e76bc5fd3266e125c2dc4b9”、“5e5dcfc65104666e70558110”),
单击类似(“xxx”、“5e5dcfc65104666e70558110”),
单击类似(“5e76bc5fd3266e125c2dc4b9”、“xxx”),
点击式(“xxx”、“xxx”)
);使用

const数据=[
{
状态:“已发布”,
_id:“5e5dcfc65104666e70558110”,
文字:“米尔达!”,
用户:{
_id:“5e0925629648903308163aeb”,
用户名:“上帝自己”,
化身:
“//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm”,
传记:“我不是上帝”,
id:“5e0925629648903308163aeb”
},
喜欢:[
{
_id:“5e76bc5fd3266e125c2dc4b9”,
用户:“5e0925629648903308163aeb”
}
],
id:“5e5dcfc65104666e70558110”
}
];
const clickLike=(用户ID,postId)=>{
返回数据.some(x=>x.\u id==postId&&x.likes.some(y=>y.\u id==userId));
};
console.log(
单击类似(“5e76bc5fd3266e125c2dc4b9”、“5e5dcfc65104666e70558110”),
单击类似(“xxx”、“5e5dcfc65104666e70558110”),
单击类似(“5e76bc5fd3266e125c2dc4b9”、“xxx”),
点击式(“xxx”、“xxx”)

);您可以使用数组原型函数-some()

var数据=[
{
状态:“已发布”,
_id:“5e5dcfc65104666e70558110”,
文字:“米尔达!”,
用户:{
_id:“5e0925629648903308163aeb”,
用户名:“上帝自己”,
化身:
“//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm”,
传记:“我不是上帝”,
id:“5e0925629648903308163aeb”
},
喜欢:[
{
_id:“5e76bc5fd3266e125c2dc4b9”,
用户:“5e0925629648903308163aeb”
}
],
id:“5e5dcfc65104666e70558110”
},
{
状态:“已发布”,
_id:“5e4a08dc4c1f0d2394f28d8e”,
文字:“首字母D!”,
用户:{
_id:“5e0925629648903308163aeb”,
用户名:“上帝自己”,
化身:
“//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm”,
传记:“我不是上帝”,
id:“5e0925629648903308163aeb”
},
喜欢:[],
id:“5e4a08dc4c1f0d2394f28d8e”
},
{
状态:“已发布”,
_id:“5e4a08584c1f0d2394f28d8d”,
文字:“狂暴波伊斯!”,
用户:{
_id:“5e0925629648903308163aeb”,
用户名:“上帝自己”,
化身:
“//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm”,
传记:“我不是上帝”,
id:“5e0925629648903308163aeb”
},
喜欢:[
{
_id:“5e4b5c889861ad1cf8b67bbb”,
用户:“5e0925629648903308163aeb”
},
{
_id:“5e4b5ca59861ad1cf8b67bbc”,
用户:“5e0925629648903308163aeb”
}
],
id:“5e4a08584c1f0d2394f28d8d”
}
];
const clickLike=(用户ID,postId)=>{
常数匹配=
资料&&
一些数据(
post=>
post.\u id===postd&&post.likes.some(like=>like.user===userId)
);
复赛;
};
log(单击类似(“5e0925629648903308163aeb”、“5e5dcfc65104666e70558110”);
log(单击类似(“5e0925629648903308163aeb”、“5e4a08dc4c1f0d2394f28d8e”);

日志(单击类似(“XXX”、“5e4a08dc4c1f0d2394f28d8e”)您可以使用数组原型函数-some()

var数据=[
{
状态:“已发布”,
_id:“5e5dcfc65104666e70558110”,
文字:“米尔达!”,
用户:{
_id:“5e0925629648903308163aeb”,
用户名:“上帝自己”,
化身:
“//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm”,
传记:“我不是上帝”,
id:“5e0925629648903308163aeb”
},
喜欢:[
{
_id:“5e76bc5fd3266e125c2dc4b9”,
用户:“5e0925629648903308163aeb”
}
],
id:“5e5dcfc65104666e70558110”
},
{
状态:“已发布”,
_id:“5e4a08dc4c1f0d2394f28d8e”,
文字:“首字母D!”,
用户:{
_id:“5e0925629648903308163aeb”,
用户名:“上帝自己”,
化身:
“//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm”,
传记:“我不是上帝”,
id:“5e0925629648903308163aeb”
},
喜欢:[],
id:“5e4a08dc4c1f0d2394f28d8e”
},
{
状态:“已发布”,
_id:“5e4a08584c1f0d2394f28d8d”,
文字:“狂暴波伊斯!”,
用户:{
_id:“5e0925629648903308163aeb”,
用户名:“上帝自己”,
化身:
“//www.gravatar.com/avatar/b62ddb6758fca61fb7a56381ac7cb07d?s=200&r=pg&d=mm”,
传记:“我不是上帝”,
id:“5e0925629648903308163aeb”
},
喜欢:[
{
_id:“5e4b5c889861ad1cf8b67bbb”,
用户:“5e0925629648903308163aeb”
},
{
_id:“5e4b5ca59861ad1cf8b67bbc”,
用户:“5e0925629648903308163aeb”
}
],
id:“5e4a08584c1f0d2394f28d8d”
}
];
const clickLike=(用户ID,postId)=>{
常数匹配=
资料&&
一些数据(
post=>
post.\u id===postd&&post.likes.some(like=>like.user===userId)
);
const clickLike = (userId, postId) => {
  return data.some(x => x._id === postId && x.likes.some(y => y._id === userId));
};