比较javascript中的多个变量

时间:2012-11-27 04:33:18

标签: 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。

5 个答案:

答案 0 :(得分:1)

好吧,我会把它扔进戒指,虽然这可能不是正确的方法,但它很有趣。 (注意:浏览器兼容性问题以及可能过度杀戮即将开始)

var a = 1,
    b = 2,
    c = 1,
    d = 3;
[a, b, c, d].sort(function(a, b) {
    return a - b;
}).reduce(function(a, b) {
    if (a == b) {
        alert('HERE');
    }
    return b;
});

这里的演示:
http://jsfiddle.net/rlemon/Eu4qG/

进一步阅读:
Array.reduce
Array.sort

答案 1 :(得分:1)

while就足够了。这将适用于任何长度的数组。但是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;
  }

我之前使用for的答案(修订版)并不令人尴尬。

答案 2 :(得分:0)

这将检查任何值是否与任何其他值相同:

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
}

答案 3 :(得分:0)

您可以编写一个函数来为您检查它们,也许是这样的:

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

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');
}​

JSFiddle:http://jsfiddle.net/thesouthstar86/j7LmZ/

答案 4 :(得分:0)

避免相同元素与自身之间的比较

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

我认为它应该升级为

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

但感谢脚本