为了找到多个用户设置(布尔)的“交集”,我需要将他们的设置对象相互比较。例如:如果单击一个用户,则可以看到其设置并可以对其进行编辑,但是如果您选择了多个可以具有不同设置的用户,则我希望能够显示不确定的状态,以显示已设置特定设置对某些用户为true,对其他用户为false。如果是多选,则相同的设置将应用于所有选定的用户。
这是到目前为止我想出的一个示例,想知道是否还有一种更优雅的方法(一旦至少有两个用户使用不同的设置,那么我就可以忽略其余的设置): aa>
提前致谢。
最佳答案
您可以使每个属性测试成为一个通用函数,在其中传递属性名称。因此,所有重复的for
循环都变为:
function checkCommonValue(prop) {
for (var j = 0; j < userAll.length; j++) {
if (userAll[j][prop] != model[prop]) {
console.log('Indeterminate status');
return(false);
}
}
return(true);
}
checkCommonValue("Printing");
checkCommonValue("Sharing");
checkCommonValue("Reading");
checkCommonValue("AccountEnabled");
checkCommonValue("Fax");
请记住基本的编码原理DRY(请勿重复)。如果发现重复的代码块几乎相同,那么该是时候考虑一种方法,将代码分解为可以从多个位置调用的通用函数,而不是将同一代码复制/粘贴到多个位置。