Как получается, что функция получает элементы без параметров?

#javascript

#javascript

Вопрос:

Я хотел бы понять, почему моя консоль.log выводит элементы, которые были размещены ранее some() .

 function isBiggerThan10(element, index, array) {
    console.log(element);
  return element > 10;
}

[2, 5, 8, 1, 4].some(isBiggerThan10);  

Насколько я понимаю, элементы должны выводиться, если они заданы как параметры isBiggerThan10() . Я думаю, это из-за функции массива some() . Если да, то как я могу написать аналогичный код, подобный тому, что some() делает? Цель состоит в том, чтобы вывести все элементы массива в функцию myElements(). myElements должен быть параметром функции test().

Это то, что я пробовал:

 Array.prototype.test = function(i) {
    console.log(i);
};

function myElements(element) {
    console.log(element);
}

[2, 5, 8, 1, 4].test(myElements);  

Но, похоже, я не понимаю логики, стоящей за этим.

Комментарии:

1. смотрите документацию

2. test() должен вызывать функцию, которую вы передали ей (в i , следовательно, это ужасное название для нее) для каждого элемента в массиве и передавать этот элемент, индекс и сам массив i (посмотрите на полиполнение для .some() )

Ответ №1:

метод some() используется для проверки условия для всех элементов массива (или указанных элементов) и возвращает true, если какой-либо из элементов массива соответствует условию, и возвращает false, если все элементы массива не соответствуют условию.

В случае, почему печатается весь элемент?, Это тот факт, что при вызове функции у вас есть консоль, регистрирующая ее, вот и все .

итак, если вы хотите вывести все числа, превышающие 10, вы можете использовать метод filter.

 function isBiggerThan10(element, index, array) {
return element > 10;
 }

 console.log([2, 5, 8, 1, 4].filter(isBiggerThan10))
  

Ответ №2:

Синтаксис Array.prototype.some() функции указывает, что вы вызываете some() через массив, и она принимает для параметров функцию обратного вызова ( function isBiggerThan10() в вашем фрагменте), которая сама принимает один аргумент и 3 других необязательных. Требуется основной аргумент, element который, является значением каждого элемента, который вы перебираете из массива, который вызывает some() . Вы можете проверить документы здесь.

Синтаксис


 arr.some(callback(element[, index[, array]])[, thisArg])
  

Параметры


обратный вызов: функция для проверки каждого элемента, принимающая три аргумента:

элемент: Текущий элемент обрабатывается в массиве.

TLDR: some() выполняет итерацию по каждому элементу массива до тех пор, пока не будет выполнено условие, а element аргумент в функции обратного вызова содержит значение текущего элемента, который выполняется итерация.

Ответ №3:

какая-то функция вызывает вашу функцию isBiggerThan10 для каждого элемента массива. Вот почему все элементы массива выводятся на консоль.
Пожалуйста, обратитесь https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some для получения более подробной информации