if (active)
classes.container = classes.container.replace(
classModifiers.active.container.remove,
classModifiers.active.container.add
);
else
classes.container = classes.container.replace(
classModifiers.active.container.add,
classModifiers.active.container.remove
);
if (active)
classes.icon = classes.icon.replace(
classModifiers.active.icon.remove,
classModifiers.active.icon.add
);
else
classes.icon = classes.icon.replace(
classModifiers.active.icon.add,
classModifiers.active.icon.remove
);
if (active)
classes.badge = classes.badge.replace(
classModifiers.active.badge.remove,
classModifiers.active.badge.add
);
else
classes.badge = classes.badge.replace(
classModifiers.active.badge.add,
classModifiers.active.badge.remove
);
我不知道如何抽象它。我已經重復了 3 次,因為我找不到其他解決方案。各位大俠幫我解答一下。有什么建議?
uj5u.com熱心網友回復:
const replacer = (entity, active) => {
if (active) {
return replace(classModifiers.active[entity].remove, classModifiers.active[entity].add);
} else {
return replace(classModifiers.active[entity].add, classModifiers.active[entity].remove);
}
};
classes.container = replacer('container', active);
classes.icon = replacer('icon', active);
classes.badge = replacer('badge', active);
可能是這樣?
uj5u.com熱心網友回復:
classes.container = doMagic(classes.container, "container");
classes.icon = doMagic(classes.icon, "icon");
classes.badge = doMagic(classes.badge, "badge");
const doMagic = (element, fieldName) =>
element.replace(
classModifiers.active[fieldName][active ? "remove" : "add"],
classModifiers.active.container[active ? "add" : "remove"]
)
uj5u.com熱心網友回復:
您可以使用 [] 符號訪問物件屬性,如下所示:
['container', 'icon', 'badge'].forEach(pname => {
if (active)
classes.container = classes.container.replace(
classModifiers.active[pname].remove,
classModifiers.active[pname].add);
else
classes.container = classes.container.replace(
classModifiers.active[pname].add,
classModifiers.active[pname].remove);
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/379747.html
上一篇:如果函式沒有在C中給出預期的輸出
