JavaScript比较3个值

oknrviil  于 2023-03-21  发布在  Java
关注(0)|答案(7)|浏览(129)

我有3个值,我想比较f,g和h.我有一些代码来检查,他们都等于对方,没有一个是空的.我已经在网上看了看,但找不到任何似乎回答我的查询.目前我正在检查代码在以下方式...

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

这是相当冗长的,我可能会添加更多的值,所以我只是想知道是否有一个更快的方法来检查没有一个值是空的,所有的值彼此相等?
提前感谢您的帮助。

wf82jlnq

wf82jlnq1#

你可以把它缩短为

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

对于比较多个值的实际方法(* 不管它们的数量
灵感来自/简化@罗汉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
}

还有一种更近的方法

function areEqualNotNull(values) {
  if (values[0] === null) return false;

  return values.every(value => value === values[0]);
}
roqulrg3

roqulrg32#

怎么样

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

bnlyeluc3#

适用于任何数量的项目。

ES5

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

ES2015

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

jw5wzhpr4#

我建议你写一个函数,你给予一个数组,里面有你想要比较的所有值,然后迭代数组来比较彼此的值:

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

应该是这样的,我想:)

rn0zuynd

rn0zuynd5#

写一个简单的函数:

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

ee7vknir6#

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

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

kmynzznz7#

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

相关问题