Что такое функция find в Python?
Метод find() используется для поиска в строке. В качестве обязательного аргумента принимает строку, которую нужно найти. Метод возвращает индекс символа, с которого начинается искомая строка. Если строка не найдена, метод вернет -1 .
txt = 'Hello, welcome to my world.' x = txt.find('welcome') print(x) # => 7
В качестве необязательных аргументов метод также принимает начало (с какого индекса начать поиск, по умолчанию это 0 — начало строки), а также конец (на каком индексе закончить поиск строки, по умолчанию поиск проводится по всей строке).
Array.prototype.find()
Метод find() возвращает значение первого найденного в массиве элемента, которое удовлетворяет условию переданному в callback функции. В противном случае возвращается undefined .
Также смотрите метод findIndex() , который возвращает индекс найденного в массиве элемента вместо его значения.
Если вам нужно найти позицию элемента или наличие элемента в массиве, используйте Array.prototype.indexOf() или Array.prototype.includes() соответственно.
Синтаксис
arr.find(callback[, thisArg])
Параметры
Функция, вызывающаяся для каждого значения в массиве, принимает три аргумента:
Текущий обрабатываемый элемент в массиве.
Индекс текущего обрабатываемого элемента в массиве.
Массив, по которому осуществляется проход.
Необязательный параметр. Значение, используемое в качестве this при выполнении функции callback .
Возвращаемое значение
Значение элемента из массива, если элемент прошёл проверку, иначе undefined .
Описание
Метод find вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт true . Если такой элемент найден, метод find немедленно вернёт значение этого элемента. В противном случае, метод find вернёт undefined . До Firefox 34 функция callback не вызывалась для «дырок» в массивах (bug 1058394).
Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.
Если в метод find был передан параметр thisArg , при вызове callback он будет использоваться в качестве значения this . В противном случае в качестве значения this будет использоваться значение undefined .
Метод find не изменяет массив, для которого он был вызван.
Диапазон элементов, обрабатываемых методом find , устанавливается до первого вызова функции callback . Элементы, добавленные в массив после начала выполнения метода find , не будут посещены функцией callback . Если существующие, непосещение элементы массива изменяются функцией callback , их значения, переданные в функцию, будут значениями на тот момент времени когда метод find посетит их; удалённые элементы все ещё будут посещены.
Примеры
Пример: поиск простого числа в массиве
Следующий пример находит в массиве положительных чисел элемент, являющийся простым числом (либо возвращает undefined , если в массиве нет простых чисел).
function isPrime(element, index, array) var start = 2; while (start Math.sqrt(element)) if (element % start++ 1) return false; > > return element > 1; > console.log([4, 6, 8, 12].find(isPrime)); // undefined, не найдено console.log([4, 5, 8, 12].find(isPrime)); // 5
Полифил
Этот метод был добавлен в спецификации ECMAScript 6 и пока может быть недоступен во всех реализациях JavaScript. Однако, вы можете использовать следующий сниппет в качестве полифила:
// https://tc39.github.io/ecma262/#sec-array.prototype.find if (!Array.prototype.find) < Object.defineProperty(Array.prototype, 'find', < value: function(predicate) < // 1. Let O be ? ToObject(this value). if (this == null) < throw new TypeError('"this" is null or not defined'); >var o = Object(this); // 2. Let len be ? ToLength(? Get(O, "length")). var len = o.length >>> 0; // 3. If IsCallable(predicate) is false, throw a TypeError exception. if (typeof predicate !== 'function') < throw new TypeError('predicate must be a function'); >// 4. If thisArg was supplied, let T be thisArg; else let T be undefined. var thisArg = arguments[1]; // 5. Let k be 0. var k = 0; // 6. Repeat, while k < len while (k < len) < // a. Let Pk be ! ToString(k). // b. Let kValue be ? Get(O, Pk). // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)). // d. If testResult is true, return kValue. var kValue = o[k]; if (predicate.call(thisArg, kValue, k, o)) < return kValue; >// e. Increase k by 1. k++; > // 7. Return undefined. return undefined; >, configurable: true, writable: true >); >
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-array.prototype.find |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Array.prototype.findIndex() Экспериментальная возможность
- Array.prototype.every()
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 4 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
JavaScript find()
Получить значение первого элемента в массиве, имеющего значение 18 или более:
var ages = [3, 10, 18, 20];
function checkAdult(age) return age >= 18;
>
function myFunction() document.getElementById(«demo»).innerHTML = ages.find(checkAdult);
>
Больше примеров «Попробуйте сами» ниже.
Определение и использование
Метод find() возвращает значение первого элемента массива, прошедшего тест (предоставляется в виде функции).
Метод find() выполняет функцию один раз для каждого элемента, присутствующего в массиве:
- Если он находит элемент массива, где функция возвращает значение true, функция find() возвращает значение этого элемента массива (и не проверяет остальные значения)
- В противном случае он возвращает undefined
Примечание: find() не выполняет функцию для пустых массивов.
Примечание: find() не изменяет исходный массив.
Поддержка браузера
Цыфры в таблице указывают первую версию браузера, которая полностью поддерживает этот метод.
| Метод | |||||
|---|---|---|---|---|---|
| find() | 45.0 | 12.0 | 25.0 | 7.1 | 32.0 |
Синтаксис
array.find(function(currentValue, index, arr),thisValue)
Значения параметров
| Параметр | Описание |
|---|---|
| function(currentValue, index, arr) | Требуемый. Функция, выполняемая для каждого элемента массива. Аргументы функции: |
| Аргумент | Описание |
|---|---|
| currentValue | Требуемый. Значение текущего элемента |
| index | Необязательный. Индекс массива текущего элемента |
| arr | Необязательный. Объект массива, к которому принадлежит текущий элемент |
Технические детали
| Возвращаемое значение: | Возвращает значение элемента массива, если какой-либо из элементов массива проходит тест, в противном случае он возвращает undefined |
|---|---|
| Версия JavaScript: | ECMAScript 6 |
Еще примеры
Пример
Получить значение первого элемента в массиве, который имеет значение выше определенного числа:
Любого указанного возраста: var ages = [4, 12, 16, 20];
function checkAdult(age) return age >= document.getElementById(«ageToCheck»).value;
>
function myFunction() document.getElementById(«demo»).innerHTML = ages.find(checkAdult);
>
Связанные страницы
Мы только что запустили
SchoolsW3 видео
ВЫБОР ЦВЕТА
курс сегодня!
Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат
SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.
Как узнать какой тип данных возвращает функция?
Есть такой вопрос, возможно ли как-то узнать, какой тип данных возвращает функция. Например есть функция:
def foo(): return 'bar'
Есть ли какие-то варианты, помимо визуального, чтобы узнать что это тип string? Если с переменной можно использовать type(x), то возможно ли провернуть что-то подобное с функциями?
Отслеживать
задан 1 дек 2021 в 16:40
user396331 user396331
1 дек 2021 в 16:42
А если разные типы возвращает? return «OK» if condition else 42
1 дек 2021 в 16:44
@MBo Выходит что в зависимости от условия функция будут возвращать тот или иной тип данных. Ну это я думаю можно отобразить в подсказках типов: -> str | int.
