为了找到多个用户设置( bool 值)的“交集”,我需要将他们的设置对象相互比较。例如:如果您单击一个用户,您会看到他的设置并可以对其进行编辑,但是如果您选择可以具有不同设置的多个用户,我希望能够显示不确定状态以显示设置了特定设置对于某些用户为 true,对于其他用户为 false。如果进行多项选择,相同的设置将应用于所有选定的用户。
这是我到目前为止想到的一个示例,想知道是否有更优雅的方法来做到这一点(只要至少有两个用户具有不同的设置,那么我就可以忽略其余的):http://jsfiddle.net/kT7UP/
提前致谢。
最佳答案
您可以将每个属性测试放入一个通用函数中,并在其中传递属性名称。因此,所有重复的 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(不要重复)。如果您发现重复的代码块几乎相同,那么是时候考虑一种方法将该代码分解为可以从多个位置调用的通用函数,而不是将相同的代码复制/粘贴到多个位置。
关于javascript - 对象属性比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323830/