Оценка массива для однородности

63
4

Я пытаюсь оценить массив для единообразия. Т.е. var num = [1,1,1,1,1,]//true или var num = [1,1,2,1,1] =//false. Он также может быть для массива строк. То, что я пытаюсь сделать, это оценить весь массив и вернуть один "истинный" или "ложный". Мой код пока оценивает каждый элемент массива и возвращает результат для каждого элемента. Я очень новичок в кодировании и занятиях в Интернете и работаю без проблем!

var num = [1,1,3,1,1];
var first = num[0];

num.forEach(function (num, i) {
if(first === num){
console.log(true);
} else {
console.log(false);
}
});

спросил(а) 2021-01-27T17:50:07+03:00 4 месяца, 4 недели назад
1
Решение
64

Использование .some()

var num = [1,1,3,1,1];

var notUni = num.some(function(val, idx, arr){
return val != arr[0]; // (If arr[0] (1) is the base you're interested in)
});

console.log( notUni ); // true

PS: some выйдут, как только он найдет (true) несоответствие.

ответил(а) 2021-01-27T17:50:07+03:00 4 месяца, 4 недели назад
63

Ты на правильном пути. Вместо того, чтобы записывать true или false для каждого ответа, создайте переменную для хранения общего ответа, а затем распечатайте ее, когда закончите. Что-то вроде этого:

var num = [1,1,3,1,1];
var first = num[0];
var ans = true;

num.forEach(function (n) {
if(first !== n){
ans = false;
}
});
console.log(ans);

ответил(а) 2021-01-27T17:50:07+03:00 4 месяца, 4 недели назад
45

Используйте Array.prototype.every()

var num = [1, 1, 3, 1, 1];

var result = num.every(n => n == num[0]);

Метод every() проверяет, прошли ли все элементы массива тест, реализованный предоставленной функцией.

var num = [1, 1, 1, 1, 1];

var result = num.every(n => n == num[0]);

document.write(result);

ответил(а) 2021-01-27T17:50:07+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема