检查多个变量的值以确保它们都匹配

时间:2012-11-28 20:44:18

标签: javascript variables string-matching

如何有效地检查多个变量的值是否都匹配?如果匹配则以下函数应返回true,否则返回false:

function projectIsLocked (data) {
    if (data.ArchiveSnapshotID === data.CurrentSnapshotID === data.LiveSnapshotID) {
        return true;
    }
    return false;
}

我以为我可以使用if (data.ArchiveSnapshotID === data.CurrentSnapshotID === data.LiveSnapshotID),但它似乎无效。

简单的想法?

3 个答案:

答案 0 :(得分:1)

为什么不将它们全部推送到数组中。这样你可以使用尽可能多的。

function check_for_equal_array_elements(my_array){
  if (my_array.length == 1 || my_array.length == 0) {
     return true;
  }
  for (i=0;i<my_array.length;i++){
     if (i > 0 && my_array[i] !== my_array[i-1]) {
       return false;
     }
  }
  return true;
}

//Example:
var my_array = [];
my_array.push(5);
my_array.push(5);

// will alert "true"
alert("all elements equal? "+check_for_equal_array_elements(my_array));

my_array.push(6);
// will alert "false"
alert("all elements equal? "+check_for_equal_array_elements(my_array));

答案 1 :(得分:1)

如果只有3次比较,那么这就足够了。

function projectIsLocked (data) {
    var archive = data.ArchiveSnapshotID;
    var current = data.CurrentSnapshotID;
    var live = data.LiveSnapshotID;

    return (archive === current && current === live)
}

答案 2 :(得分:0)

这里的问题是,逻辑表达式的一部分被评估然后进行比较,因此data.ArchiveSnapshotID === data.CurrentSnapshotID被评估为“true”并且data.LiveSnapshotID被检查为true,您可以在这里看到({ {1}}已更改为布尔LiveSnapshotID):

true

您可能希望使用类似的东西,这对于更多属性来说是非常可扩展的。

function projectIsLocked (data) {
    if (data.ArchiveSnapshotID === data.CurrentSnapshotID === data.LiveSnapshotID) {
        return true;
    }
    return false;
}

var data = { ArchiveSnapshotID: "foo", CurrentSnapshotID: "foo", LiveSnapshotID: true };
alert(projectIsLocked (data));