Проверьте, идентичен ли каждый элемент массива в javascript

Мне нужно проверить, идентичен ли каждый элемент в массиве. Например:

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

Должен оцениваться как false, потому что каждый элемент не идентичен. С другой стороны, это:

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

Должен оцениваться как истинный, потому что все они идентичны. Каким будет наиболее эффективный (по скорости/ресурсам) способ достижения этого?

Ответ 1

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

Ответ 2

В 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 также делает короткое замыкание.

Ответ 3

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

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

  return true;
}

Ответ 4

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;

Ответ 5

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

Ответ 7

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

Вы всегда можете сделать новый сет и проверить длину.

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