0

为了找到多个用户设置的“交集”(布尔值),我需要将他们的设置对象相互比较。例如:如果您单击一个用户,您会看到他的设置并可以对其进行编辑,但是如果您选择多个可以具有不同设置的用户,我希望能够显示一个不确定的状态以显示已设置特定设置对某些用户为真,对另一些用户为假。在多选的情况下,相同的设置将应用于所有选定的用户。

这是我到目前为止提出的一个示例,并且想知道是否有更优雅的方法来做到这一点(只要至少有两个具有不同设置的用户,那么我可以忽略其余的):http ://jsfiddle.net/kT7UP/

提前致谢。

4

1 回答 1

2

您可以将每个属性测试变成一个通用函数,您可以在其中传递属性名称。所以你所有的重复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(不要重复自己)。如果您发现您正在重复几乎相同的代码块,那么是时候想办法将该代码分解为可以从多个位置调用的通用函数,而不是将相同的代码复制/粘贴到多个位置。

于 2012-04-25T21:12:54.000 回答