如何有效地检查多个变量的值是否都匹配?如果匹配则以下函数应返回true,否则返回false:
function projectIsLocked (data) {
if (data.ArchiveSnapshotID === data.CurrentSnapshotID === data.LiveSnapshotID) {
return true;
}
return false;
}
我以为我可以使用if (data.ArchiveSnapshotID === data.CurrentSnapshotID === data.LiveSnapshotID)
,但它似乎无效。
简单的想法?
答案 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));