6

4 つの変数を比較する必要があります。2 つの変数が同じ場合は、アラートを表示する必要があります。私は次の方法が好きでした。

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;
}

式を、すべての変数を個別にチェックする 1 つの条件の瞬間に減らすことは可能ですか。事前にアドバイスをお願いします ... TnQ。

4

5 に答える 5

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

于 2012-11-27T04:45:33.747 に答える
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少し恥ずかしかったです。

于 2012-11-27T04:55:34.850 に答える
0

同じ要素とそれ自体の比較を避けるため

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

にアップグレードする必要があると思います

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

しかし、スクリプトをありがとう

于 2013-11-27T23:48:44.297 に答える
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
}
于 2012-11-27T04:39:08.953 に答える
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/

于 2012-11-27T04:45:22.167 に答える