Javascript比较3个值

时间:2012-04-02 08:46:50

标签: javascript

我有3个值,我想比较f,g和h。我有一些代码来检查它们是否彼此相等,并且它们都不为空。我在网上看过,但找不到任何似乎可以回答我查询的内容。目前我正在以下列方式检查代码......

if(g == h && g == f && f == h && g != null && f != null && h != null)
{
//do something
}

这是漫长的啰嗦,我可能会添加更多的值,所以我只是想知道是否有更快的方法来检查没有值为空并且所有值彼此相等?

提前感谢您的帮助。

7 个答案:

答案 0 :(得分:37)

您可以将其缩短为

if(g === h && g === f && g !== null)
{
//do something
}

用于比较多个值的实际方法(,无论其数量
灵感来自/简化@Rohan Prabhu回答

function areEqual(){
   var len = arguments.length;
   for (var i = 1; i< len; i++){
      if (arguments[i] === null || arguments[i] !== arguments[i-1])
         return false;
   }
   return true;
}

并使用

调用此方法
if( areEqual(a,b,c,d,e,f,g,h) )
{
//do something
}

答案 1 :(得分:11)

适用于任意数量的物品。

ES5

ODS PDF FILE= 'OUTPUT.PDF';    
PROC GPLOT data = AB.TEMP;     
plot sales*Months=Product;
by Region;
run;
ODS PDF CLOSE;

ES2015

if ([f, g, h].every(function (v, i, a) {
  return (
    v === a[0] &&
    v !== null
  );
})) {
  // Do something
}

答案 2 :(得分:4)

写一个简单的函数:

var checkAllArguments = function() {
    var len = arguments.length;
    var obj;

    if(len == 0) {
        return true;
    } else {
        if(arguments[0] == null) {
            return false;
        } else {
            obj = arguments[0];
        }
    }

    for(var i=1; i<len; i++) {
        if(arguments[i] == null) {
            return false;
        }

        if(obj == arguments[i]) {
            continue;
        } else {
            return false;
        }
    }

    return true;
}

现在,要检查多个参数,您所要做的就是:

if(checkAllArguments(g, h, f)) {
   // Do something
}

答案 3 :(得分:4)

我建议你编写一个函数,给出一个包含你想要比较的所有值的数组,然后遍历数组来比较彼此的值:

function compareAllValues(a) {
     for (var i = 0; i < a.length; i++) {
         if (a[i] === null) { return false }
         for (var j = 0; j < i; j++) {
            if (a[j] !== a[i]) { return false }
         }
     }

     return true;
}

应该是它,我认为:)

答案 4 :(得分:1)

(new Set([a,b,c])).size === 1

答案 5 :(得分:0)

distinct添加Array.prototype功能:

Array.prototype.distinct = function() {
    var result = [];
    for(var i = 0; i < this.length; i++) {
        if (result.indexOf(this[i]) == -1) {
            result.push(this[i]);
        }
    }
    return result; 
}

然后做:

var myArray = [f, g, h];
if (myArray.indexOf(null) == -1 && myArray.unique().length == 1)
{
    // no nulls and all elements have the same value!
}

答案 6 :(得分:0)

创建一个字符串数组,并检查其中的下一个值是否存在

compareAnswers(a1: string, a2: string, a3: string): boolean {
   this.compareAnswerArr.push(a1);
if (this.compareAnswerArr.includes(a2) == false) {
  this.compareAnswerArr.push(a2);
  if (this.compareAnswerArr.includes(a3) == false) {
    return true;
  } else return false;
}
else return false;}