1

I have an array object same like below and I want to get the result only 3 keys id, token and name:

[
 {
  id:1,
  token: 'xyz',
  name: 'john',
  _v: 2,
  _isActived: true,
  _isBlocked: false,
  ...
 },
 {
  id: 2,
  token: 'abc',
  name: 'thomas',
  _v: 2,
  _isActived: true,
  _isBlocked: false,
  ...
 },
 ...
]

My desired result:

[
 {
  id:1,
  token: 'xyz',
  name: 'john'
 },
 {
  id:2,
  token: 'abc',
  name: 'thomas'
 },
 ...
]

Who can help me please!

2

2 Answers 2

5

Array.map will do the trick.

I have made use of object destructuring as well.

const data = [
 { id:1, token: 'xyz', name: 'john', _v: 2, _isActived: true, _isBlocked: false },
 { id: 2, token: 'abc', name: 'thomas', _v: 2, _isActived: true, _isBlocked: false },
];
const output = data.map(({id, name, token}) => ({id, name, token}));
console.log(output);

If you have a list of allowed keys. You can incoperate this in the map function. Just loop through this array inside the map and add this to an object.

Working Fiddle

const data = [
 { id:1, token: 'xyz', name: 'john', _v: 2, _isActived: true, _isBlocked: false },
 { id: 2, token: 'abc', name: 'thomas', _v: 2, _isActived: true, _isBlocked: false },
];
const list_keys_allowed = ['id', 'token', 'name'];
const output = data.map((node) => {
    const newObj = {};
    list_keys_allowed.forEach(key => newObj[key] = node[key])
    return newObj;
});
console.log(output);

The above statements will create a new array from existing.

If you want to update original array, you could follow the below logic.

Logic

  • Loop through the array.
  • Access the nodes from object.
  • Loop through the remaining keys and delete them from the objects in the array.

Working Fiddle

const data = [
    { id: 1, token: 'xyz', name: 'john', _v: 2, _isActived: true, _isBlocked: false },
    { id: 2, token: 'abc', name: 'thomas', _v: 2, _isActived: true, _isBlocked: false },
];
data.forEach((data) => {
    const { id, name, token, ...restNodes } = data; // ...restNodes will collect all keys except id, name and token
    Object.keys(restNodes).forEach((key) => delete data[key]);
});
console.log(data);

Sign up to request clarification or add additional context in comments.

5 Comments

can you give me an example Array.map() with keys matching from list declared? Ex: const list_keys_allow = ['id', 'token', 'name']
@Anna Sorry, I couldnt understand. Can you elaborate what you are looking for?
Ex: const list_keys_allowed = ['id', 'token', 'name']; // [ { id:1, token: 'xyz', name: 'john' }] const list_keys_allowed = ['id', '_v', '_isBlocked']; // [ { id: 1, _v: 2, _isBlocked: false } ]
@Anna updated the answer, please check
Thank you so much! Your answer helps for me learn a lot. Thank you once again!
1

You can use this

const newArray = myArray.map(object => ({object.id, object.token, object.name}))

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.