Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 - Fatal编程技术网

比较javascript中的多个变量

比较javascript中的多个变量,javascript,Javascript,我需要比较四个变量。如果任意两个变量相同,我需要显示警报。 我确实喜欢下面的方式 var a =1; var b =2; var c =3; var d =4; if((a==b)||(a==c)||(a==d)||(b==c)||(b==d)||(c==d)){ alert("Value is same, Please change the value"); return false; } 这是否可能将表达式简化为单独检查所有变量的一个条件。敬请告知。。。TnQ提前。此项检查任何值是否与任

我需要比较四个变量。如果任意两个变量相同,我需要显示警报。 我确实喜欢下面的方式

var a =1;
var b =2;
var c =3;
var d =4;

if((a==b)||(a==c)||(a==d)||(b==c)||(b==d)||(c==d)){
alert("Value is same, Please change the value");
return false;
}
这是否可能将表达式简化为单独检查所有变量的一个条件。敬请告知。。。TnQ提前。

此项检查任何值是否与任何其他值相同:

var values = [a, b, c, d, e, f /* ... */];

function shared_values(values) {
    for (var i = 0; i < values.length; i++) {
        for (var j = i; j < values.length; j++) {
            if (values[i] === values[j]) {
                return true;
            }
        }
    }
    return true;
}

if (shared_values(values)) {
    // Don't submit form or whatever
}
var值=[a,b,c,d,e,f/*…*/];
函数共享_值(值){
对于(变量i=0;i
您可以编写一个函数来检查它们,可能是这样的:

编辑:根据其他答案,您可以通过排序提高效率

function areTwoEqual() {
    var arg_list = [].slice.call(arguments).sort(
        function(a,b) { return a-b; }
    );
    var vals = {};
    for(var i = 0, len = arg_list.length; i < len; i++) {
        if(vals[arg_list[i]]) {
            return true;
        }
        vals[arg_list[i]] = '1';
    }
    return false;
}

var a =1;
var b =2;
var c =3;
var d =1;

if(areTwoEqual(a,b,c,d)) {
    alert('Two values are identical!');
} else {
    alert('all values are unique');
}​
函数aretowequal(){
var arg_list=[].slice.call(arguments).sort(
函数(a,b){返回a-b;}
);
var VAL={};
对于(变量i=0,len=arg_list.length;i

JSFiddle:

好吧,我会把这个扔到拳击场上,虽然这可能不是正确的方法,但很有趣。(注意:浏览器兼容性问题和可能的过度杀戮即将发生)

此处演示:

进一步阅读:


就足够了。这将适用于任意长度的数组。但是
a
数组将被修改,您可能需要复制

a = [1, 2, 3, 4];
while (a.length > 1)
  if (a.indexOf(a.pop()) != -1) {
    alert("Value is same, Please change the value");
    break;
  }

我以前的答案(修订版)使用了
来表示
,这有点尴尬。

为了避免同一元素和它本身之间的比较

if (values[i] === values[j]) { }
我认为应该升级到

if ( (values[i] === values[j]) && (i != j) ) { }

但是感谢脚本

您应该使用数组。加密哈希是确保安全的唯一方法。实现SHA-3.dis则更加繁琐OP@diEcho仅适用于小值计数。无论你有四个变量还是四百个变量,代码都是一样的。虽然排序是有效的方法,但在这里减少是不合适的。但是。。。分类并不过分。这是最好的方法。我同意,这就是为什么我仍然觉得答案是正确的。但我确实对它的警告提出了警告(具体地说是减少)。这是我第一次得到正确答案,因为这不是我注意到的最好的答案:)@rlemon谢谢你提醒我有关排序的事情!用它来让我的答案比以前更有效率。。我想=)谢谢你的支持。代码按照预期工作。再次感谢你的支持。当两个以上的值相同时,它会给出两个相同的值。根据这些值,它可能会提示有多少个值是相同的。您可以对此进行修改,但如果您的值类似于1,1,1,3,3,5,您希望得到什么样的结果?你想让它给你2美元吗?还是3?
if ( (values[i] === values[j]) && (i != j) ) { }