尝试从对象数组中获取 id 并将这些 id 推入数组

我正在尝试使用下面的代码从对象数组中获取 id

const opaqueMaterialSecondaryIds = Object.values(library?.layers).reduce((acc, opaque) => {
    acc.push(...opaque.map(e => e.id));
        return acc;
  }, []);

并在 is not function 处收到错误opaque.map,该对象如下所示

https://img1.sycdn.imooc.com/6529fbc80001810b13640178.jpg

我不确定上面的代码哪里做错了。任何人都可以对此提出任何想法,非常感谢。



开心每一天1111
浏览 122回答 2
2回答

忽然笑

map()是一个数组方法,不存在于对象中。你的每一项library?.layers都是一个对象,所以opaque.map不是一个函数。旁注1:library?.layers已经是一个对象,所以你不需要调用Object.values(),而是可以直接使用library?.layers?.reduce()。旁注 2:如果您的目的是获取所有对象的 id opaque,您可以这样做:const opaqueMaterialSecondaryIds = library?.layers?.map(opaque => opaque.id);

慕妹3146593

如果你的结构是这样的:const layers = [  {    # other attributes,    id: 'id-1',    # other attributes,  },  {    ...  },];我想你所需要的只是这个:const layerIds = layers.map((l) => l.id);console.log(layerIds);# Output: ['id-1', 'id-2']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript