копирование массива объектов и упорядочение некоторых элементов

#javascript #arrays #object

#javascript #массивы #объект

Вопрос:

У меня есть массив объектов, и я хочу скопировать этот массив объектов в другой массив, изменяя некоторые элементы, например, копируя id только в порядке возрастания и копируя только значение трофеев баскетбола в трофеи. Как это сделать?

 const item = [{
                "id": 33,
                "name": "John"
                "trophies": {
                        "basketball" : 2,
                        "baseball" : 5
                           },
                 "profile": "profile/212"
               }
              {
                "id": 12,
                "name": "Michael"
                "trophies": {
                        "basketball" : 6,
                        "baseball" : 7
                           },
                "profile": "profile/341"
               }
            ]
  

Я хочу, чтобы приведенный выше массив объектов после копирования выглядел примерно так

 
const item2 = [{
                "id": 12,
                "name": "Michael"
                "trophies": 6,
                "profile": "http://collegeprofile.com/profile/341"
               },
               
              {
                "id": 33,
                "name": "John"
                "trophies": 2,
                "profile": "http://collegeprofile.com/profile/212"
               }
            ]
  

Ответ №1:

  • Вы можете сортировать по идентификатору в порядке возрастания, используя Array.prototype.sort
  • И сопоставление basketball значения с trophies использованием Array.prototype.map .

 const item = [{
  "id": 33,
  "name": "John",
  "trophies": {
    "basketball": 2,
    "baseball": 5
  },
  "profile": "profile/212"
}, {
  "id": 12,
  "name": "Michael",
  "trophies": {
    "basketball": 6,
    "baseball": 7
  },
  "profile": "profile/341"
}];

const output = item.sort((a, b) => (a.id - b.id)).map((item) => ({
  ...item,
  trophies: item.trophies.basketball,
  profile: "http://collegeprofile.com/"   item.profile
}));
console.log(output);  

Комментарии:

1. Я бы предложил (a.id - b.id) вместо (a.id > b.id) .

2. @Дерек. W Спасибо за ваш ответ. также, как мне изменить этот профиль на ссылку профиля?