Выберите данные из массива объектов и верните новый объект

Так что я:

"people": [
                {
                    "first": "Linda",
                    "last": "Donson",
                    "salary": "4000USD"
                },
                {
                    "first": "Mark",
                    "last": "Sullivan",
                    "salary": "3500USD"
                },
        ];

Теперь я хочу преобразовать это в новый массив объектов, содержащий только желаемый набор данных. Например:

"people": [
                    {
                        "first": "Linda",
                        "salary": "4000USD"
                    },
                    {
                        "first": "Mark",
                        "salary": "3500USD"
                    },
            ];

Как я могу это сделать? Таким образом, он должен извлечь ключ "last" и его значения и вернуть только "first" и "last".

Спасибо

Покажите, пожалуйста, что вы пробовали. Удаление свойств в объектах несложно исследовать, как и перебирать массивы объектов и копировать объекты. Stackoverflow - это не бесплатный сервис для написания кода. Цель здесь в том, чтобы другие помогли вам исправить ваш код. Даже если вы разобрали только часть, а остальное работает не так, как ожидалось, это покажет некоторые усилия, которые ожидаются.

charlietfl 10.08.2018 16:43

Возможный дубликат Как проверить, включает ли массив объект в JavaScript?

user8608046 10.08.2018 17:07
6
2
119
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

вы можете использовать функцию карты, чтобы получить новый массив с желаемыми параметрами https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

var source = [ { first: 'first1', last: 'last1', property1: 'p1-1' }, { first: 'first2', last: 'last2', property1: 'p1-2' }];

var mapped = source.map( function (e) {
  return { first: e.first, property1: e.property1 }
})

console.log('mapped : ', mapped)

Спасибо, как это будет выглядеть в ES6?

user8608046 10.08.2018 16:48

то же самое для es6, map - это метод прототипа массива developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…, вы можете использовать стрелочную функцию!

tierrarara 14.08.2018 18:19

Вы можете использовать forEach

var peoples = [{
        "first": "Linda",
        "last": "Donson",
        "salary": "4000USD"
    },
    {
        "first": "Mark",
        "last": "Sullivan",
        "salary": "3500USD"
    },
];


// empty array 
var newPeoples = [];


peoples.forEach((people) => {

    // only push desired object inside empty array
    newPeoples.push({
        "first": people.first,
        "salary": people.salary
    });

});


// desired array of objects
console.log(newPeoples);
Ответ принят как подходящий

Это действительно простой лайнер через map и delete или map и ES6 destructuring, как показано в двух нижеприведенных примерах:

var data = [{
    "first": "Linda",
    "last": "Donson",
    "salary": "4000USD"
  },
  {
    "first": "Mark",
    "last": "Sullivan",
    "salary": "3500USD"
  }
]

console.log(data.map(x => delete(x.salary) && x))

Также, если вас беспокоит изменение объекта, вы можете просто использовать ES6 destructuring и short object literal notation, чтобы получить это:

Object.values(data).map(({first, last})  => ({first, last}))

Другие вопросы по теме