代码之家  ›  专栏  ›  技术社区  ›  David

如何查找数组是否有其他元素?

  •  -2
  • David  · 技术社区  · 7 年前

    我有任何阵列

    var myArr = [1,1,1,1,1];
    

    如果数组中的所有元素都相同,则返回 true 以及其他 false .

    myArr[1,1,1,1,1] 返回 真的

    myArr[1,2,1,1,1] 返回

    for(var i=0; i<myArr.length; i++){
        if(myArr[i] != myArr[i+1]){
            flg = false; 
        }
    
    }
    

    有谁能帮我设计这个代码吗。

    7 回复  |  直到 7 年前
        1
  •  0
  •   Muhammad Usman    7 年前

    这就是为什么 .every

    var myArr = [1,1,1,1,2 ];
    
    var myArr2 =  [1,1,1,1,1,2,3,4,5];
    
    console.log(myArr.every(o=> myArr2.indexOf(o) >=0 ))
        2
  •  0
  •   Tamim    7 年前

    function retStat( myArr ){
    
    	for(var i=0; i<myArr.length; i++){
    	    if(myArr[i] != 1){
    	        return false;
    	    }
    
    	}
    
    	return true;
    
    }
    
    arr1 = [1,1,1,1,1];
    arr2 = [1,2,1,1,1];
    
    console.log( retStat( arr1 ) ); // true
    console.log( retStat( arr2 ) ); // false
        3
  •  0
  •   Ankit Agarwal    7 年前

    这也可以在没有循环的情况下实现。您可以检查数组的整个字符串重新表示的第一个元素。如果找到字符串中所有字符的匹配项,则将为空值 ''

    function isSame(arr){
      var str = arr.join('');
      var re = new RegExp(arr[0],"g");
      var replacedStr = str.replace(re,'');
      return !Boolean(replacedStr);
    }
    
    var myArr = [1,1,1,1,1];
    console.log(isSame(myArr));
    myArr = [1,2,1,1,1];
    console.log(isSame(myArr));
    myArr = [1,1,1,5,1];
    console.log(isSame(myArr));
        4
  •  0
  •   barbsan Cibi    7 年前

    因为要检查数组中的所有元素是否相同,所以可以将所有元素与第一个元素进行比较。 功能 some

    console.log(check([1,1,1]));
    console.log(check([1,2,3]));
    console.log(check([]));
    
    function check(arr){
      if (!arr.length){
        return false;
      }
     return !arr.some(el=> el !== arr[0]);
    }
        5
  •  0
  •   harshita_ahuja    7 年前

    我认为这是可行的:

    <script type="text/javascript">
    var myArr = [1,1,1,1,1];
    flg=true;
    for(var i=0; i<myArr.length; i++)
    {
        if(i==(myArr.length-1))
        {
            if(myArr[i]!=myArr[i-1])
            {
                flg=false;
            }
        }
        else
        {
            if(myArr[i] != myArr[i+1])
            {
                flg=false;
                return false;
            }
        }
    }
    console.log(flg);
    </script>
    
        6
  •  0
  •   Jagdish Idhate    7 年前

    小错误,您正在检查下一个元素 myArr[i+1] 那就是 undefined 最后一个循环

    检查状况 myArr.length-1

    for(var i=0; i<myArr.length-1; i++){
        if(myArr[i] != myArr[i+1]){
            flg = false; 
            break;
        }
    }
    
        7
  •  0
  •   Takit Isy Surendra    7 年前

    下面是一个由这个答案启发的解决方案 https://stackoverflow.com/a/9229821/5061000

    snippet中的以下函数做什么?

    • 退换商品 true 如果 .length == 1 (即所有值都相同!)。

    function array_all_same(a) {
      return a.filter(function(item, pos) {
        return a.indexOf(item) == pos;
      }).length == 1;
    }
    
    
    var myArr1 = [1, 1, 1, 1, 1];
    console.log(array_all_same(myArr1));
    
    var myArr2 = [1, 2, 1, 1, 1];
    console.log(array_all_same(myArr2));