#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 для получения более подробной информации