如何將每個條目的狀態屬性更改為 false 假設組“B”,而不更改其他條目?通過改變陣列或回傳一個新陣列
const personnel = [
{ id: 0, name: "Audrey Holcomb", group: "A", status: true },
{ id: 1, name: "Gwendolyn Heath", group: "B", status: true },
{ id: 2, name: "Rivas Mclean", group: "C", status: true },
{ id: 3, name: "Valeria Schneider", group: "A", status: true },
{ id: 4, name: "Leticia Keith", group: "C", status: true },
{ id: 5, name: "Nadine Woodward", group: "B", status: true },
{ id: 6, name: "Shaffer Oliver", group: "A", status: true },
{ id: 7, name: "Meghan Norman", group: "B", status: true },
{ id: 8, name: "Kyle Smith", group: "C", status: true },
]
uj5u.com熱心網友回復:
使用map和檢查組
const update = (arr, group = "B", status = false) =>
arr.map((item) => ({
...item,
status: item.group === group ? status : item.status,
}));
const personnel = [
{ id: 0, name: "Audrey Holcomb", group: "A", status: true },
{ id: 1, name: "Gwendolyn Heath", group: "B", status: true },
{ id: 2, name: "Rivas Mclean", group: "C", status: true },
{ id: 3, name: "Valeria Schneider", group: "A", status: true },
{ id: 4, name: "Leticia Keith", group: "C", status: true },
{ id: 5, name: "Nadine Woodward", group: "B", status: true },
{ id: 6, name: "Shaffer Oliver", group: "A", status: true },
{ id: 7, name: "Meghan Norman", group: "B", status: true },
{ id: 8, name: "Kyle Smith", group: "C", status: true },
];
console.log(update(personnel))
console.log(update(personnel, "C", false))
uj5u.com熱心網友回復:
回圈遍歷陣列,檢查組是否為 B,然后將狀態更改為 false
const personnel = [
{ id: 0, name: "Audrey Holcomb", group: "A", status: true },
{ id: 1, name: "Gwendolyn Heath", group: "B", status: true },
{ id: 2, name: "Rivas Mclean", group: "C", status: true },
{ id: 3, name: "Valeria Schneider", group: "A", status: true },
{ id: 4, name: "Leticia Keith", group: "C", status: true },
{ id: 5, name: "Nadine Woodward", group: "B", status: true },
{ id: 6, name: "Shaffer Oliver", group: "A", status: true },
{ id: 7, name: "Meghan Norman", group: "B", status: true },
{ id: 8, name: "Kyle Smith", group: "C", status: true },
];
for (let i = 0; i < personnel.length; i ) {
if (personnel[i]["group"] == "B") {
personnel[i]["status"] = false;
}
}
console.log(personnel);
uj5u.com熱心網友回復:
您可以使用 map 回傳一個新陣列并隨時修改 B 組元素。在這個特定的例子中,這個方法沒有什么值得推薦的,我不認為,但在更復雜的情況下它可以簡單得多。
const personnel = [
{id: 0, name: 'Audrey Holcomb', group: 'A', status: true},
{id: 1, name: 'Gwendolyn Heath', group: 'B', status: true},
{id: 2, name: 'Rivas Mclean', group: 'C', status: true},
{id: 3, name: 'Valeria Schneider', group: 'A', status: true},
{id: 4, name: 'Leticia Keith', group: 'C', status: true},
{id: 5, name: 'Nadine Woodward', group: 'B', status: true},
{id: 6, name: 'Shaffer Oliver', group: 'A', status: true},
{id: 7, name: 'Meghan Norman', group: 'B', status: true},
{id: 8, name: 'Kyle Smith', group: 'C', status: true},
];
let changed = personnel.map(m=>{
m.status = m.group == 'B' ? false : m.status;
return m;
});
console.log(changed);
您還可以創建一個箭頭函式來使事情更簡潔,然后由于您只在地圖中使用一行,您可以省略return和花括號:
const personnel = [
{id: 0, name: 'Audrey Holcomb', group: 'A', status: true},
{id: 1, name: 'Gwendolyn Heath', group: 'B', status: true},
{id: 2, name: 'Rivas Mclean', group: 'C', status: true},
{id: 3, name: 'Valeria Schneider', group: 'A', status: true},
{id: 4, name: 'Leticia Keith', group: 'C', status: true},
{id: 5, name: 'Nadine Woodward', group: 'B', status: true},
{id: 6, name: 'Shaffer Oliver', group: 'A', status: true},
{id: 7, name: 'Meghan Norman', group: 'B', status: true},
{id: 8, name: 'Kyle Smith', group: 'C', status: true},
];
const checkGroup=(a)=>{
a.status = a.group=='B' ? false : a.status;
return a;
};
let changed = personnel.map(m=>checkGroup(m));
console.log(changed);
為了獲得更多的可擴展性,您可以設定輔助函式接受一個引數,比如要更改的目標:
const personnel = [
{id: 0, name: 'Audrey Holcomb', group: 'A', status: true},
{id: 1, name: 'Gwendolyn Heath', group: 'B', status: true},
{id: 2, name: 'Rivas Mclean', group: 'C', status: true},
{id: 3, name: 'Valeria Schneider', group: 'A', status: true},
{id: 4, name: 'Leticia Keith', group: 'C', status: true},
{id: 5, name: 'Nadine Woodward', group: 'B', status: true},
{id: 6, name: 'Shaffer Oliver', group: 'A', status: true},
{id: 7, name: 'Meghan Norman', group: 'B', status: true},
{id: 8, name: 'Kyle Smith', group: 'C', status: true},
];
const checkGroup=(a,b)=>{
a.status = a.group==b ? false : a.status;
return a;
};
let changed = personnel.map(m=>checkGroup(m, 'B'));
console.log(changed);
你也可以收緊布爾邏輯以避免使用三元運算子,盡管在這種特殊情況下,它可能比其他方式更難閱讀和維護,而且它只是稍微短了一點:
const personnel = [
{id: 0, name: 'Audrey Holcomb', group: 'A', status: true},
{id: 1, name: 'Gwendolyn Heath', group: 'B', status: true},
{id: 2, name: 'Rivas Mclean', group: 'C', status: true},
{id: 3, name: 'Valeria Schneider', group: 'A', status: true},
{id: 4, name: 'Leticia Keith', group: 'C', status: true},
{id: 5, name: 'Nadine Woodward', group: 'B', status: true},
{id: 6, name: 'Shaffer Oliver', group: 'A', status: true},
{id: 7, name: 'Meghan Norman', group: 'B', status: true},
{id: 8, name: 'Kyle Smith', group: 'C', status: true},
];
const checkGroup=(a,b)=>{
a.status = !(a.group==b || !a.status)
return a;
};
let changed = personnel.map(m=>checkGroup(m, 'B'));
console.log(changed);
但是,如果您的用例真的像您所描述的一樣簡單,那么您將很難擊敗 forEach,您可以在一行中完成:
const personnel = [
{id: 0, name: 'Audrey Holcomb', group: 'A', status: true},
{id: 1, name: 'Gwendolyn Heath', group: 'B', status: true},
{id: 2, name: 'Rivas Mclean', group: 'C', status: true},
{id: 3, name: 'Valeria Schneider', group: 'A', status: true},
{id: 4, name: 'Leticia Keith', group: 'C', status: true},
{id: 5, name: 'Nadine Woodward', group: 'B', status: true},
{id: 6, name: 'Shaffer Oliver', group: 'A', status: true},
{id: 7, name: 'Meghan Norman', group: 'B', status: true},
{id: 8, name: 'Kyle Smith', group: 'C', status: true},
];
personnel.forEach(m=>{m.status = m.group == 'B' ? false : m.status});
console.log(personnel);
uj5u.com熱心網友回復:
personnel.map(item => {
if (item?.group === 'B') {
item.status = false;
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/365174.html
標籤:javascript
上一篇:變數和提升
