Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查多个变量';值以确保它们都匹配_Javascript_Variables_String Matching - Fatal编程技术网

Javascript 检查多个变量';值以确保它们都匹配

Javascript 检查多个变量';值以确保它们都匹配,javascript,variables,string-matching,Javascript,Variables,String Matching,如何有效地检查多个变量的值是否都匹配?如果匹配,则以下函数应返回true;如果不匹配,则返回false: function projectIsLocked (data) { if (data.ArchiveSnapshotID === data.CurrentSnapshotID === data.LiveSnapshotID) { return true; } return false; } 我想我可以使用if(data.ArchiveSnapshot

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

function projectIsLocked (data) {
    if (data.ArchiveSnapshotID === data.CurrentSnapshotID === data.LiveSnapshotID) {
        return true;
    }
    return false;
}
我想我可以使用
if(data.ArchiveSnapshotID===data.CurrentSnapshotID===data.LiveSnapshotID)
,但它似乎不起作用


简单的想法?

为什么不将它们全部推到一个数组中呢。这样,您可以使用尽可能多的

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));
函数检查\u相等\u数组\u元素(my\u数组){
if(my_array.length==1 | | my_array.length==0){
返回true;
}
对于(i=0;i 0&&my_数组[i]!==my_数组[i-1]){
返回false;
}
}
返回true;
}
//例如:
var my_数组=[];
my_array.push(5);
my_array.push(5);
//将提示“true”
警报(“所有元素相等?”+检查数组元素是否相等(我的数组));
my_array.push(6);
//将警告“错误”
警报(“所有元素相等?”+检查数组元素是否相等(我的数组));

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

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

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

这里的问题是,对逻辑表达式的一部分求值,然后进行比较,因此
data.ArchiveSnapshotID==data.CurrentSnapshotID
求值为“true”,而
data.LiveSnapshotID
将根据true进行检查,您可以在这里看到(
LiveSnapshotID
已更改为布尔值
true
):

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

function projectIsLocked (data) {
    var props = ["ArchiveSnapshotID", "CurrentSnapshotID", "LiveSnapshotID"];

    for (var i = 1; i < props.length; i++) 
    {
        if (data[props[i]] !== data[props[i - 1]])
            return false;
    }
    return true;
}
功能项目锁定(数据){
var props=[“ArchiveSnapshotID”、“CurrentSnapshotID”、“LiveSnapshotID”];
对于(变量i=1;i
建议:使用
==在比较中
我的_数组[i]!==我的数组[i-1]
,因此
“5”和
5
不算作相等(因为OP在问题中指定了三重相等)。(另外,+1)这些值不会存储在数组中。它们只是局部变量。从技术上讲,按照作者的措辞,你添加了一个不必要的步骤,因为他试图比较同一个对象的属性。您可以使用for循环对对象的属性进行迭代以进行比较。是的,将它们推送到数组是另一个选项。@PlanB如果您有一个解决方案,请发布它,而不仅仅是注释。+1您还可以去掉
if
语句,因为比较的结果总是布尔值<代码>返回存档===current&¤t===live
好多了。。谢谢。。我没有用那种方式思考
function projectIsLocked (data) {
    var props = ["ArchiveSnapshotID", "CurrentSnapshotID", "LiveSnapshotID"];

    for (var i = 1; i < props.length; i++) 
    {
        if (data[props[i]] !== data[props[i - 1]])
            return false;
    }
    return true;
}