這個問題在這里已經有了答案: javascript 從陣列中的所有物件中提取某些屬性 5 個回答 3 小時前關閉。
我有一個與下面相同的陣列物件,我只想得到 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,
...
},
...
]
我想要的結果:
[
{
id:1,
token: 'xyz',
name: 'john'
},
{
id:2,
token: 'abc',
name: 'thomas'
},
...
]
請問誰能幫幫我!
uj5u.com熱心網友回復:
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);
如果您有允許的密鑰串列。您可以在 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 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);
上述陳述句將從現有陣列創建一個新陣列。
如果要更新原始陣列,可以遵循以下邏輯。
邏輯
- 回圈遍歷陣列。
- 從物件訪問節點。
- 遍歷剩余的鍵并將它們從陣列中的物件中洗掉。
作業小提琴
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);
uj5u.com熱心網友回復:
你可以用這個
const newArray = myArray.map(object => ({object.id, object.token, object.name}))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322556.html
標籤:javascript 数组
