如何使用 JavaScript 删除数组中对象的另一个键?

Ann*_*nna 1 javascript arrays

我有一个与下面相同的数组对象,我只想得到 3 个键idtokenname的结果:

[
 {
  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)

谁能帮帮我啊!

Nit*_*esh 5

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)