Сопоставить массив javascript с определенным значением новым ключом - PullRequest
0 голосов
/ 09 июня 2018

поэтому у меня есть такой массив

columnData:[
 {
   title: 'Male Members',
   key: 'm_members'
 }
 {
   title: 'Female Members',
   key: 'f_members'
 }
]

, и я хочу превратить его во что-то вроде этого

newColumn: {
  m_members: 'Male Members',
  f_members: 'Female Members
}

как это сделать с помощью JavaScript или lodash?

Ответы [ 4 ]

0 голосов
/ 09 июня 2018

Вы можете пройтись по элементам с помощью метода forEach, а затем заполнить новый объект с помощью key и value, полученных из columnData:

const columnData = [{title: 'Male Members',key: 'm_members'},{title: 'Female Members',key: 'f_members'}]

let newData = {};
columnData.forEach(e => {
  newData[e.key] = e.title
})

console.log(newData)
0 голосов
/ 09 июня 2018

Вы можете сделать это с помощью Object.assign и синтаксиса распространения ....

const data = [{title: 'Male Members',key: 'm_members'}, {title: 'Female Members',key: 'f_members'}]

const result = Object.assign({}, ...data.map(({title, key}) => ({[key]: title})));
console.log(result)
0 голосов
/ 09 июня 2018
const result = {};

for(const {title, key} of columnData)
  result[key] = title;

Простой цикл for делает это.

0 голосов
/ 09 июня 2018

Использование Array.reduce и Object.assign

var columnData = [{title: 'Male Members',key: 'm_members'},{title:'Female Members',key: 'f_members'}];
newColumn = columnData.reduce((a,{title, key}) => Object.assign(a, {[key]:title}),{});
console.log(newColumn);
...