如何在对象内的对象上使用 find() 方法

亚历克斯

我正在尝试返回comments_text其中具有匹配键的对象findKey

const findKey = "-MkeQEa2sgCho_ijk7TO"

const posts = [
    0:{
        comment: false,
        comments_text: {
            0: {
                commenter_comment: "test1",
                commenter_handle: "LEOPARD1",
                commenter_uid: "ErGGzFxr4oPjWCEAPuNpdTdzPu63",
                key: "-MkeQEa2sgCho_ijk7TO"
            },
            1: {
                commenter_comment: "test2",
                commenter_handle: "LEOPARD1",
                commenter_uid: "ErGGzFxr4oPjWCEAPuNpdTdzPu63",
                key: "-MkeQM4yD95PSEPfAj4v"
            }
        },
        handle: "username1",
        key: "-MkePAHv8kux6INOSCji",
        title: "Hello"
      }
]

例如,在这种情况下,由于findKey是“-MkeQEa2sgCho_ijk7TO”,因此将返回:

            {
                commenter_comment: "test1",
                commenter_handle: "LEOPARD1",
                commenter_uid: "ErGGzFxr4oPjWCEAPuNpdTdzPu63",
                key: "-MkeQEa2sgCho_ijk7TO"
            }

我尝试了以下...

const returnMatchingObject = posts.comments_text.find(object=> object.key === findKey);

但是,我收到一条错误消息“无法读取未定义的属性(正在读取‘查找’)”

我觉得我错误地访问了对象。我该如何改进?感谢您的审查和任何帮助。

德鲁里斯

与其他答案类似,遍历posts数组以查找匹配的嵌套comments_text对象属性。不同之处在于它在第一个找到的匹配项时跳出循环,并且不需要该post.comments_text属性首先是一个数组。

let item;

for (const post of posts) {
  item = Object.values(post.comments_text).find(
    (comment) => comment.key === findKey
  );

  if (item) {
    break;
  }
}

const findKey = "-MkeQEa2sgCho_ijk7TO";

const posts = [
  {
    comment: false,
    comments_text: {
      0: {
        commenter_comment: "test1",
        commenter_handle: "LEOPARD1",
        commenter_uid: "ErGGzFxr4oPjWCEAPuNpdTdzPu63",
        key: "-MkeQEa2sgCho_ijk7TO"
      },
      1: {
        commenter_comment: "test2",
        commenter_handle: "LEOPARD1",
        commenter_uid: "ErGGzFxr4oPjWCEAPuNpdTdzPu63",
        key: "-MkeQM4yD95PSEPfAj4v"
      }
    },
    handle: "username1",
    key: "-MkePAHv8kux6INOSCji",
    title: "Hello"
  }
];

let item;

for (const post of posts) {
  item = Object.values(post.comments_text).find(
    (comment) => comment.key === findKey
  );

  if (item) {
    break;
  }
}

console.log(item);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章