вы проверяете элемент с индексом y-1
больше 0
. Вам следует проверить наличие индекса, а не элемента в этом индексе.
function isUniform(table1){
for(var y = table1.length - 1; y>=0; y--){
if( (typeof table1 === 'string' && table1[y] !== table1[y - 1]) || (typeof table1 !== 'string' && table1[y] !== table1[y - 1] && y - 1 > 0) ){
return false;
}
}
return true;
}
console.log(isUniform(['a','b','a','a']))
Использование Set()
Более простой способ сделать это - использовать Set()
const allEqual = arr => new Set(arr).size === 1
console.log(allEqual(['a','b','a','a']))
Использование every()
Вы также можете использовать every()
и сравнить каждый элемент с первым.
const allEqual = arr => arr.every(x => arr[0] === x);
console.log(allEqual(['a','b','a','a']))
Примечание: Функция, подобная этой, обычно принимает параметр и затем возвращается на основе этого входа. Вы не должны объявлять локальный массив, а затем только проверять его.
Во-вторых, я не мог понять причину typeof table1 === 'string'
. Если вы объясните, каковы другие требования к функции, вы получите лучшее решение.