Как превратить значения объекта в новый массив в JavaScript - PullRequest
1 голос
/ 17 марта 2020

Я пытаюсь упростить следующее состояние:

{ 
  "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 эти. Не каждый объект содержит два типа; некоторые содержат только один.

Я считаю, что именно поэтому большинство из того, что я пробовал до сих пор, не работает. Спасибо заранее за вашу помощь.

Ответы [ 3 ]

0 голосов
/ 17 марта 2020

Я думаю, что это то, что вам нужно, вам нужно добавить этот фрагмент в al oop для вашего набора данных и поместить его в новый массив:

const Obj = { 
  "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)
0 голосов
/ 23 марта 2020

Я смог решить, что мне нужно, используя логику c, предоставленную Ма'муном Отманом.

  "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)
0 голосов
/ 17 марта 2020

Попробуйте использовать карту

let obj={ name: "bulbasaur", picture: "https://raw", height: 7, weight: 69, types : [{ slot: 1, type: { name: "poison", url:"https://poke" }}]};
obj.types=obj.types.map( Type => Type.type.name);
console.log(obj.types);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...