js почему вторая функция не работает
Напишите функцию, которая проверяет, находится ли элемент в данной позиции в данный массив целых чисел больше, чем два его соседа (если таковые существуют).
let arr = [2, 4, 6, 3, 5, 7, 8, 0, 5, 4, 3];
function isBigger (arr, i) {
if (i != 0 && i != arr.length) {
if (arr[i] > arr [i+1]) {
if (arr[i] > arr[i - 1]) {
console.log('The number is bigger');
} else {
console.log('Left neihbour is bigger or equal');
}
} else {
console.log('Right neihbour is bigger or equal');
}
} else {
console.log('No neihbour');
}
}
isBigger(arr, 2);
isBigger(arr, 0);
isBigger(arr, 1);
/* Напишите функцию, которая возвращает индекс первого элемента в массиве, который больше, чем его соседи, или - 1, если такого элемента нет, воспользуйтесь функцией из предыдущего упражнения.
*/
function findBigger (arr) {
for (let i = 1; i < arr.length-1; i++) {
isBigger(arr);
console.log([i]);
}
}
findBigger();
Ответы (1 шт):
Думаю что-то такое хотели получить
let arr = [2, 4, 6, 3, 5, 7, 8, 0, 5, 4, 3];
function isBigger (arr, i) {
if (i > 0 && i < arr.length - 1 && arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) {
return true;
}
return false;
}
console.log(isBigger(arr, 2))
console.log(isBigger(arr, 0));
console.log(isBigger(arr, 1));
function findBigger(arr) {
for(let i = 1; i< arr.length -1; i++){
if (isBigger(arr, i)) return i;
}
return -1;
}
let index = findBigger(arr);
console.log(index, arr[index]);
К вопросу почему вторая функция не работает.
isBigger(arr);
думаю вы хотели вызвать
isBigger(arr, i)
а это console.log([i]); я так понимаю вы хотели получить index.
Ошибка ваша в том что вы путаете Возврат значения из функции (return), вывод значения в консоль console.log. Так вот Ваша isBigger ничего не возращяет, только выводить текст в консоль.
UPD К коментарию о возможности сократить можно написать так
let arr = [2, 4, 6, 3, 5, 7, 8, 0, 5, 4, 3];
let isBigger = (a, i) => i>0&&i<a.length-1&&a[i]>a[i-1]&&a[i]>a[i + 1];
console.log(isBigger(arr, 2))
console.log(isBigger(arr, 0));
console.log(isBigger(arr, 1));
let findBigger = a => a.indexOf(a.filter((_, i)=>isBigger(a, i))[0]);
let index = findBigger(arr);
console.log(index, arr[index]);