Javascript 检查多个变量';值以确保它们都匹配
如何有效地检查多个变量的值是否都匹配?如果匹配,则以下函数应返回true;如果不匹配,则返回false: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
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;
}