检查数组中的每个项目在javascript中是否相同

时间:2012-03-10 13:48:11

标签: javascript arrays

我需要测试数组中的每个项目是否彼此相同。例如:

var list = ["l","r","b"]

应评估为false,因为每个项目不相同。另一方面,这个:

var list = ["b", "b", "b"]

应该评估为真,因为它们都是相同的。实现这一目标的最有效(速度/资源)方式是什么?

10 个答案:

答案 0 :(得分:15)

在ES5中,你可以这样做:

arr.every(function(v, i, a) {
   // first item: nothing to compare with (and, single element arrays should return true)
   // otherwise:  compare current value to previous value
   return i === 0 || v === a[i - 1];
});

.every也会发生短路。

答案 1 :(得分:10)

function identical(array) {
    for(var i = 0; i < array.length - 1; i++) {
        if(array[i] !== array[i+1]) {
            return false;
        }
    }
    return true;
}

答案 2 :(得分:2)

function matchList(list) {
  var listItem = list[0];

  for (index in list) {
    if(list[index] != listItem {
       return false;
    }
  }

  return true;
}

答案 3 :(得分:1)

var list = ["b", "b", "b"];
var checkItem = list[0];
var isSame = true;
for (var i = 0; i < list.length; i++) {
  if (list[i] != checkItem) {
    isSame = false;
    break;
  }
}
return isSame;

答案 4 :(得分:1)

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- begin snippet: js hide: false console: true babel: false -->

答案 5 :(得分:1)

arr.every(i=>i==arr[0]) //will return true if all items in arr are identical

答案 6 :(得分:0)

我的建议是删除重复项(查看Easiest way to find duplicate values in a JavaScript array),然后检查长度是否= = 1.这意味着所有项目都是相同的。

答案 7 :(得分:0)

function allEqual(list)
{
    if(list.length == 0 || list.length == 1)
    {
      return true;
    }

    for (index in list) {
    if(list[index] != list[index+1] {
       return false;
    }
  }

  return true;

}

答案 8 :(得分:0)

你总是可以做一个新的Set,并检查长度。

var set1 = [...new Set(list)].length === 1 ? true: false;

答案 9 :(得分:0)

let arr = ["l","r","b"];

单行答案是:

  

arr.every((val,ind,arr)=> val === arr [0]);

您可以查看Array.every以获得更多详细信息。

注意:

  1. Array.everyES5开始可用。
  2. 对于放置在空数组上的任何条件,此方法都会返回true
  3. 语法:arr.every(callback[, thisArg])array.every(function(currentValue, index, arr), thisValue)
  4. 它不会更改原始数组
  5. every()的执行为short-circuitedevery()一旦找到与谓词不匹配的数组元素,它将立即返回false,并且不会遍历其余元素