如何在JavaScript中将对象值转换为新数组

如何在JavaScript中将对象值转换为新数组,javascript,arrays,reactjs,sorting,object,Javascript,Arrays,Reactjs,Sorting,Object,我试图简化以下状态: { "name": "bulbasaur", "picture": "https://raw", "height": 7, "weight": 69, "types": [ { "slot": 1, "type": { "name": "poison", "url": "https://poke" } }, { "slot": 2

我试图简化以下状态:

{ 
  "name": "bulbasaur", 
  "picture": "https://raw", 
  "height": 7, 
  "weight": 69, 
  "types": [
    { 
      "slot": 1,
      "type": { 
        "name": "poison", 
        "url": "https://poke" 
      }
    }, 
    { 
      "slot": 2, 
      "type": { 
        "name": "grass", 
        "url": "https://poke" 
      }
    }
]}
变成这样:

{ 
  "name": "bulbasaur", 
  "picture": "https://raw", 
  "height": 7, 
  "weight": 69, 
  "types": [ "poison", "grass" ] 
}
另外,我想提到的是,我有一个数组,其中有151个。不是每个对象都包含两种类型;有些只包含一个

我相信这就是我迄今为止尝试的大部分方法都不起作用的原因。提前感谢您的帮助

尝试使用map

let obj={name:“bulbasaur”,图片:https://raw,身高:7,体重:69,类型:[{插槽:1,类型:{名称:“毒药”,url:https://poke" }}]};
obj.types=obj.types.map(Type=>Type.Type.name);
控制台日志(对象类型)尝试使用map

let obj={name:“bulbasaur”,图片:https://raw,身高:7,体重:69,类型:[{插槽:1,类型:{名称:“毒药”,url:https://poke" }}]};
obj.types=obj.types.map(Type=>Type.Type.name);

控制台日志(对象类型)我认为这就是您想要的,您需要将此代码段添加到数据集的循环中,并将其推送到新数组中:

const Obj={
“名称”:“bulbasaur”,
“图片”:https://raw", 
“高度”:7,
“重量”:69,
“类型”:[{
“槽”:1,
“类型”:{
“名称”:“毒药”,
“url”:”https://poke" 
}}, { 
“槽”:2,
“类型”:{
“名称”:“草”,
“url”:”https://poke" 
}}
]};
常数newObj={
…Obj,
类型:对象类型映射((el)=>el.type.name),
}

console.log(newObj)
我想这就是您想要的,您需要将此代码段添加到数据集的循环中,并将其推送到新数组中:

const Obj={
“名称”:“bulbasaur”,
“图片”:https://raw", 
“高度”:7,
“重量”:69,
“类型”:[{
“槽”:1,
“类型”:{
“名称”:“毒药”,
“url”:”https://poke" 
}}, { 
“槽”:2,
“类型”:{
“名称”:“草”,
“url”:”https://poke" 
}}
]};
常数newObj={
…Obj,
类型:对象类型映射((el)=>el.type.name),
}

log(newObj)
通过使用Ma'moun othman提供的逻辑,我能够解决我需要的问题

  "name": "bulbasaur", 
  "picture": "https://raw", 
  "height": 7, 
  "weight": 69, 
  "types" : [{ 
    "slot": 1, 
    "type": { 
        "name": "poison", 
        "url":"https://poke" 
    }}, { 
    "slot": 2, 
    "type": { 
        "name": "grass", 
        "url":"https://poke" 
    }}
]};

const newObj = {
  ...Obj,
  types: Obj.types.map((el) => el.type.name),
}

console.log(newObj)

通过使用Ma'moun othman提供的逻辑,我能够解决我需要的问题

  "name": "bulbasaur", 
  "picture": "https://raw", 
  "height": 7, 
  "weight": 69, 
  "types" : [{ 
    "slot": 1, 
    "type": { 
        "name": "poison", 
        "url":"https://poke" 
    }}, { 
    "slot": 2, 
    "type": { 
        "name": "grass", 
        "url":"https://poke" 
    }}
]};

const newObj = {
  ...Obj,
  types: Obj.types.map((el) => el.type.name),
}

console.log(newObj)

所以数组映射就是你需要的,我假设
=
真的是
那么数组映射就是你需要的,我假设
=
真的是
非常感谢!这正是我所需要的。我对堆栈溢出是新手。我试着给你的帖子投票,但上面说的是只为15岁以上的人工作。我如何接受它作为答案?我对你的问题投了赞成票,你现在应该可以投赞成票了:P,你也可以看到箭头下面有一个
✔️灰色图标,点击即可接受答案。非常感谢!这正是我所需要的。我对堆栈溢出是新手。我试着给你的帖子投票,但上面说的是只为15岁以上的人工作。我如何接受它作为答案?我对你的问题投了赞成票,你现在应该可以投赞成票了:P,你也可以看到箭头下面有一个
✔️灰色图标,点击它接受答案。