【问题标题】:how to check the array contains different values or same values in Jquery [duplicate]如何检查数组在Jquery中是否包含不同的值或相同的值[重复]
【发布时间】:2016-12-09 05:10:05
【问题描述】:

一个数组可以包含多个值。我想检查所有值是否相同或不同。

例子

var a = [2, 4, 7, 2, 8];   // all values are not same
var b = [2, 2, 2, 2, 2];   // all values are same

如何在 jquery 中查看

【问题讨论】:

标签: javascript jquery


【解决方案1】:

如果您可以访问Set

var a = [2, 4, 7, 2, 8];
var b = [2, 2, 2, 2, 2];

function onlyOneValue(arr){
  return [...new Set(arr)].length < 2;
}

document.write(onlyOneValue(a) + '<br>');
document.write(onlyOneValue(b));

【讨论】:

    【解决方案2】:

    可以使用数组reduce:

    Array.prototype.areAllTheSame = function() {
        if(!this.length)
            return false
        return this.reduce(function(p, c) {
            return [c, c==p[0] && p[1]]
        }, [this[0], true])[1]
    }
    
    var arr = [1,2,3,4]
    var arr2 = [2,2,2,2]
    
    arr.areAllTheSame() //-->false
    arr2.areAllTheSame() //-->true
    

    【讨论】:

      【解决方案3】:

      检查此解决方案

      function arrayUnique(array)
      {
          function onlyUnique(value, index, self) { 
               return self.indexOf(value) === index;
          }
      
          var unique = array.filter( onlyUnique );
      
          return (unique.length == 1);
      }   
      // usage example:
      var a = [2, 3, 2, 2, 2];
      console.log('Array is unique : ' + arrayUnique(a)); 
      // Array is unique : false
      
      var b = [2, 2, 2, 2, 2];
      console.log('Array is unique : ' + arrayUnique(b)); 
      // Array is unique : true
      

      【讨论】:

        【解决方案4】:

        你可以这样试试:

        var a = [2, 4, 7, 2, 8];  
        var b = [2, 2, 2, 2, 2];
        
            function myFunc(arr){
                var x= arr[0];
                return arr.every(function(item){
                    return item=== x;
                });
            }
        
        alert(myFunc(a));
        alert(myFunc(b));

        查看 Array.prototype.every() 的 MDN

        【讨论】:

        • 我建议稍微改进一下:return arr.slice(1).every(v =&gt; arr[0]);,因为没有必要检查arr[0] === arr[0];但这充其量只是一个微优化;并且可能根本不是一种优化,如果对数组进行切片比不必要地将第一个数组元素与其自身进行比较所需的时间更长。
        • 哇,很棒的代码,运行良好。谢谢@Rahul
        【解决方案5】:

        您可以使用 Jquery 中的 not 函数在一行中完成此操作

        var test= $(a).not(b).length === 0;
        

        JsFiddle 示例

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-13
          • 1970-01-01
          • 2019-04-27
          • 1970-01-01
          • 2018-04-23
          • 2018-01-15
          相关资源
          最近更新 更多