javascript - 对象属性比较

标签 javascript arrays object comparison

为了找到多个用户设置( 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/

相关文章:

javascript - firebug (1.10.1) 表明 javascript 不限于 firefox (13.0) 中的单个线程

javascript - 匹配 Postgres "operator name"规则的正则表达式

java - java中如何返回二维数组的值

python - Numpy (python) - 创建一个矩阵,其中行的后续值乘以行号

对象的delphi类型信息

java - 默认构造函数的隐式 super 构造函数 Num() 未定义。必须定义一个显式的构造函数,这背后的逻辑是什么

javascript - 如何使用 javascript 获取像素中左/右/上/下属性的值?

javascript - 为什么水平滚动条可见而垂直滚动条不可见?

python - 在python中通过其索引和数组切片数据框

javascript - 数组数组转换为对象数组