对象属性比较

时间:2012-04-25 21:08:18

标签: javascript arrays object comparison

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

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

提前致谢。

1 个答案:

答案 0 :(得分: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的基本编码原则(不要重复自己)。如果你发现你正在重复几乎相同的代码块,那么就该考虑一种方法来将代码分解为可以从多个地方调用的常用函数,而不是将相同的代码复制/粘贴到多个位置。