Выбрать значения из массива объектов на основе другого массива Javascript

132
22 февраля 2022, 10:50

Есть массив объектов и массив

const map = ["_id", "name", "email", "balance"]; 
 
const users = [{ 
    _id: "5d220b10e8265cc978e2586b", 
    isActive: true, 
    balance: 2853.33, 
    age: 20, 
    name: "Buckner Osborne", 
    gender: "male", 
    company: "EMPIRICA", 
    email: "bucknerosborne@empirica.com", 
    phone: "+1 (850) 411-2997", 
    registered: "2018-08-13T04:28:45 -03:00", 
    nestedField: { 
      total: 300 
    } 
  }, 
  { 
    _id: "5d220b10144ef972f6c2b332", 
    isActive: true, 
    balance: 1464.63, 
    age: 38, 
    name: "Rosalie Smith", 
    gender: "female", 
    company: "KATAKANA", 
    email: "rosaliesmith@katakana.com", 
    phone: "+1 (943) 463-2496", 
    registered: "2016-12-09T05:15:34 -02:00", 
    nestedField: { 
      total: 400 
    } 
  }, 
  { 
    _id: "5d220b1083a0494655cdecf6", 
    isActive: false, 
    balance: 2823.39, 
    age: 40, 
    name: "Estrada Davenport", 
    gender: "male", 
    company: "EBIDCO", 
    email: "estradadavenport@ebidco.com", 
    phone: "+1 (890) 461-2088", 
    registered: "2016-03-04T03:36:38 -02:00", 
    nestedField: { 
      total: 200 
    } 
  } 
];

Нужно получить значения из объектов массива users только те, где ключи совпадают с элементами первого массива map.

Получить нужно такой массив объектов

[ 
  { 
    _id: "5d220b10e8265cc978e2586b", 
    balance: 2853.33, 
    name: "Buckner Osborne", 
    email: "bucknerosborne@empirica.com" 
  }, 
  { 
    _id: "5d220b10144ef972f6c2b332", 
    balance: 1464.63, 
    name: "Rosalie Smith", 
    email: "rosaliesmith@katakana.com" 
  }, 
  { 
    _id: "5d220b1083a0494655cdecf6", 
    balance: 2823.39, 
    name: "Estrada Davenport", 
    email: "estradadavenport@ebidco.com" 
  } 
];

Answer 1

Так ?

const map = ["_id", "name", "email", "balance"]; 
 
const users = [{ 
    _id: "5d220b10e8265cc978e2586b", 
    isActive: true, 
    balance: 2853.33, 
    age: 20, 
    name: "Buckner Osborne", 
    gender: "male", 
    company: "EMPIRICA", 
    email: "bucknerosborne@empirica.com", 
    phone: "+1 (850) 411-2997", 
    registered: "2018-08-13T04:28:45 -03:00", 
    nestedField: { 
      total: 300 
    } 
  }, 
  { 
    _id: "5d220b10144ef972f6c2b332", 
    isActive: true, 
    balance: 1464.63, 
    age: 38, 
    name: "Rosalie Smith", 
    gender: "female", 
    company: "KATAKANA", 
    email: "rosaliesmith@katakana.com", 
    phone: "+1 (943) 463-2496", 
    registered: "2016-12-09T05:15:34 -02:00", 
    nestedField: { 
      total: 400 
    } 
  }, 
  { 
    _id: "5d220b1083a0494655cdecf6", 
    isActive: false, 
    balance: 2823.39, 
    age: 40, 
    name: "Estrada Davenport", 
    gender: "male", 
    company: "EBIDCO", 
    email: "estradadavenport@ebidco.com", 
    phone: "+1 (890) 461-2088", 
    registered: "2016-03-04T03:36:38 -02:00", 
    nestedField: { 
      total: 200 
    } 
  } 
]; 
 
const res = users.map(u => map.reduce((a, e) => { 
  a[e] = u[e]; 
  return a; 
}, {})) 
 
console.log(res)

READ ALSO
Замена значения массива

Замена значения массива

Подскажите, пожалуйста, как можно реализовать замену числовых значений в массиве не затрагивая строковые значения на javascript? Пробовал регуляркой...

83
плавное выезжание блока с помощью CSS или JS

плавное выезжание блока с помощью CSS или JS

Задача следующая: поставить затемнение на экран при нажатии на кнопку и обратно убирать затемнение при повторном нажатии

78
Не сохраняется токен в LocalStorage

Не сохраняется токен в LocalStorage

Есть файл Token с запросом

100
splice удаляет первый элемент все время

splice удаляет первый элемент все время

Почему splice удаляет все время первый элемент массива?

71