我有一個物件陣列
const target = [{name: '[email protected]', selected: false, alertType: 'max'},
{name: '[email protected]', selected: true, alertType: 'clear'},]
現在我想根據名稱和警報型別更新陣列。例如:如果 name 和 alertType 匹配,則更新所選屬性。如果不匹配,則添加一個新物件。新物件是
const = {name: '[email protected]', selected: false, alertType: 'both'}
uj5u.com熱心網友回復:
您可以使用它Array.find()來查找任何匹配的專案。如果找到現有專案,您將進行更新,如果沒有找到,則添加新專案:
const target = [
{name: '[email protected]', selected: false, alertType: 'max'},
{name: '[email protected]', selected: true, alertType: 'clear'}
];
const update = { name: '[email protected]', selected: false, alertType: 'both' };
function updateAlerts(input, update) {
let foundAlert = input.find(alert => ((alert.alertType === update.alertType) && (alert.name === update.name)));
if (foundAlert) {
foundAlert.selected = update.selected;
} else {
input.push(update);
}
}
updateAlerts(target, { name: '[email protected]', selected: false, alertType: 'both' })
console.log(target);
updateAlerts(target, { name: '[email protected]', selected: true, alertType: 'max' })
console.log(target);
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315778.html
標籤:javascript 数组 目的
