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!
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
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);
You can use this
const newArray = myArray.map(object => ({object.id, object.token, object.name}))