-2
var columnNames = [{columnName: 'User', id:'userName' }, {columnName: 'Email Id', id:'emailId' }]
var tableData = [{userName: 'aaa', emailId: 'aaa@test.com', age: 20, middleName: 'test' }, {userName: 'bbb', emailId: 'bbb@test.com', age: 30, middleName: 'test1'}, {userName: 'ccc', emailId: 'ccc@test.com', age: 40, middleName: 'test3'}];

My requirement:

var output = [{userName: 'aaa', emailId: 'aaa@test.com'}, {userName: 'bbb', emailId: 'bbb@test.com'}, {userName: 'ccc', emailId: 'ccc@test.com'}]

All I am trying to implement this but don't find a proper idea to implement this. I am completely stuck to implement this functionality. I need array of objects having all property values available in columnNames id values.

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Soumya Behera
  • 2,325
  • 4
  • 15
  • 25

1 Answers1

1

You can use map and reduce to achieve the desired result.

var columnNames = [
  { columnName: "User", id: "userName" },
  { columnName: "Email Id", id: "emailId" },
];

var tableData = [
  { userName: "aaa", emailId: "aaa@test.com", age: 20, middleName: "test" },
  { userName: "bbb", emailId: "bbb@test.com", age: 30, middleName: "test1" },
  { userName: "ccc", emailId: "ccc@test.com", age: 40, middleName: "test3" },
];

var output = [
  { userName: "aaa", emailId: "aaa@test.com" },
  { userName: "bbb", emailId: "bbb@test.com" },
  { userName: "ccc", emailId: "ccc@test.com" },
];

const result = tableData.map((obj) =>
  columnNames.reduce((acc, curr) => {
    acc[curr.id] = obj[curr.id];
    return acc;
  }, {})
);

console.log(result);
DecPK
  • 24,537
  • 6
  • 26
  • 42