gpt4 book ai didi

angular - 将子对象属性名称转换为字符串数组的智能方法?

转载 作者:搜寻专家 更新时间:2023-10-30 21:17:10 25 4
gpt4 key购买 nike

我有一个类似这样的对象:

{
"name":"sdfsd",
"id":1,
"groups":[
{
"name":"name1",
"id":1,
"subGroups":[..]
},
{
"name":"name2",
"id":21,
"subGroups":[..]
}
]
}

我想要一个包含以下内容的数组:

[
{
"name":"name1",
"id":1
},
{
"name":"name2",
"id":21
}
]

我可以做一个循环,然后创建我的数组,但在 ES6 中一定有更漂亮的方法吗?

最佳答案

你可以这样写:

const groups = this.obj.groups.map( ({name, id}) => ({name, id}) );

或者像这样把mapper封装成单独的函数:

const getNameId = ({name, id}) => ({name, id});
const groups = this.obj.groups.map(getNameId);

所以你在这里使用了很多 ES6 特性:

  • map() 函数——在 ES6 之前引入,但是一种非常实用的方法,用于映射现有数组并以不可变的方式创建新数组(深层复制,不引用原始数组)
  • 将对象解构为函数参数 --> ({name, id}) => 了解它 - 太棒了。
  • 对象速记符号 --> => ({name, id})
  • 无点符号 - 函数式编程爱好者喜欢的另一个功能 - 您可以将它与 unary 函数一起使用 - 只有一个参数的函数,也称为 arity 为 1 .所以不用写groups.map(g => ({id: g.id, name: g.name})) 你将 mapper 函数提取到单独的函数中,然后像这样传递它 map(getNameId )

关于angular - 将子对象属性名称转换为字符串数组的智能方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52818619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com