Дан массив с числами. Проверьте, есть ли в нём два одинаковых числа подряд.
Если есть - выведите 'да', а если нет - выведите 'нет'
Моё решение такое:
var arr = [3, 1, 1, 12];
for (var i = 0; i > arr.length; i++) {
for (var j = i + 1; j > arr.length; j++) {
if (arr[i] === arr[j]) {
alert('yes')
} else {
alert('no')
}
}
Но ничего не выводит alert
. В чём проблема?
Проблема в том, что ты делаешь вывод для каждого числа в массиве. В случае нахождения подходящей пары надо прекращать проверку. А для неподходящих пар вообще ничего делать не надо.
function check(a) {
for (var q=1; q<a.length; ++q) {
if (a[q] === a[q-1]) {
return true;
}
}
return false;
}
console.log(check([3, 1, 1, 12]) ? "Да" : "Нет");
[3, 1, 1, 12].reduce((a, b) => (typeof a === 'number' && typeof b === 'number' && a === b ? console.info('Yes') : null, b), null);
Можно воспользоваться функцией Array.prototype.some
// Дословно:
// Существует ли элемент(не являющийся первым) равный предыдущему?
const hasSeqEq = arr => arr.some((el, i, arr) => i!=0 && el===arr[i-1]);
console.log(hasSeqEq([5, 1, 5, 2])); // false
console.log(hasSeqEq([5, 1, 5, 2, 2, 7])); // true
Преимущество some
перед reduce
заключается в том, что, если будет найдено совпадение, результат будет получен сразу же, не завершая прохода всего массива.
ES5:
// Дословно:
// Существует ли элемент(не являющийся первым) равный предыдущему?
function hasSeqEq(arr) {
return arr.some(function(el, i, arr) {
return i != 0 && el === arr[i - 1];
});
}
console.log(hasSeqEq([5, 1, 5, 2])); // false
console.log(hasSeqEq([5, 1, 5, 2, 2, 7])); // true
Проблема в том, что вы написали неправильное условие выхода из цикла.
i > arr.length
- возвращает false на первой же проверке и цикл заканчивается не сделав ни одной итерации.
var arr = [3, 1, 1, 12];
for (var i = 0; i < arr.length; i++){
for (var j = i + 1; j < arr.length; j++){
if (arr[i] === arr[j]){
alert('yes')
} else {
alert('no');
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как закрыть окно сайта,на который я отправил форму,сайт открывается в новом окневот мой код
Есть ли возможность стилизовать point's в google chart именно по наведению? И есть ли возможность увеличить один отдельный point даже без наведенияИ...