我有一个与下面相同的数组对象,我只想得到 3 个键id、token和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,
...
},
...
]
Run Code Online (Sandbox Code Playgroud)
我想要的结果:
[
{
id:1,
token: 'xyz',
name: 'john'
},
{
id:2,
token: 'abc',
name: 'thomas'
},
...
]
Run Code Online (Sandbox Code Playgroud)
谁能帮帮我啊!
Array.map会成功的。
我也使用了对象解构。
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);Run Code Online (Sandbox Code Playgroud)
如果您有允许的密钥列表。您可以将其合并到地图功能中。只需在地图内循环遍历这个数组并将其添加到一个对象中即可。
工作小提琴
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);Run Code Online (Sandbox Code Playgroud)
上述语句将从现有数组创建一个新数组。
如果你想更新原始数组,你可以遵循以下逻辑。
逻辑
工作小提琴
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);Run Code Online (Sandbox Code Playgroud)