Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629

Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()

17.06.2018, 03:16. Показов 2723. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
функции передаётся буква алфавита в нижнем регистре и она должна вернуть следующую по очереди букву алфавита в нижнем регистре
при этом если на входе последняя буква алфавита z, то вернуться должна первая буква алфавита a
в общем, классический однонаправленный кольцевой список с уникальными пунктами
реализовать список можно как строкой из 26-ти символов, так и массивом из 26-ти элементов, а затем и там, и там использовать метод indexOf ()
что именно лучше использовать, и главное, обоснуйте, плиз: почему?
какой из двух вариантов быстрее и при этом потребует меньше ресурсов?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.06.2018, 03:16
Ответы с готовыми решениями:

Модифицировать метод Array.prototype.indexOf () так, чтобы первым его параметром был вектор из нескольких элементов
навскидку реализация видится такой: использовать существующую функциональность метода Array.prototype.indexOf () последовательно для...

Проблемы с методом массива (Array.prototype.p=1 var arr=new Array(); arr.watch('p',alertme) arr.p=2)
Опять я с подобной проблемой. <script language='JavaScript1.2'> function alertme(id,oldValue,newValue){ alert('arr.'+id+' =...

Prototype это свойство или атрибут?
] это свойство или атрибут объекта?

23
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 03:19
kalabuni,приветствую. Цитирую ecma-international
метод indexOf является общим для всех типов объектов, для которых он может быть использован.
ну и ссыль, естессно - https://www.ecma-international... pe.indexof
смотрим Note 2
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
17.06.2018, 05:48  [ТС]
Qwerty_Wasd, спс, но об этом я в курсе
просто я описанную в топе задачку реализовал через строку и получил порцию критики: якобы с массивами в принципе всё работает проще, быстрее и экономнее (поэтому и спросил здесь про обоснование)
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
17.06.2018, 12:58
Через строку быстрее работает. https://jsperf.com/string-vs-array-indexof
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
17.06.2018, 13:45  [ТС]
sad67man, не уверен в релевантности результата: время, потраченное на процесс "сплитования" исходной строки по инструкции var arr = str.trim().split(" ");, может существенно повлиять на результат сравнения алгоритмов

но если всё верно,то это ещё одно подтверждение тезиса "Лень - двигатель прогресса", мне лениво было писать 52-е кавычки и 25-ть запятых при инициализации массива ['a', 'b', 'c', ... 'z'];, а при использовании строки кавычек надо всего-то две: 'abc...z';
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 16:06
sad67man, kalabuni, думается мне, что это зависит еще и от конкретного движка, ведь у каждого своя реализация API.
Миниатюры
Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()   Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()   Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()  

0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 16:11
В хроме работа с массивом оказалась быстрее. В мозиле наоборот. Ну IE так до кучи

Добавлено через 3 минуты
Цитата Сообщение от kalabuni Посмотреть сообщение
якобы с массивами в принципе всё работает проще, быстрее и экономнее
а могу я узнать как ЭТО было обосновано. Создатели стандарта к примеру делегировали этот метод. То есть разницы в исполнении никакой. Тесты выше подтверждают лишь то, что я сказал о разных движках.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
17.06.2018, 16:54
Цитата Сообщение от kalabuni Посмотреть сообщение
не уверен в релевантности результата: время, потраченное на процесс "сплитования" исходной строки по инструкции var arr = str.trim().split(" ");, может существенно повлиять на результат сравнения алгоритмов
На сколько я понимаю, задание переменных происходит до тестов, просто показывается, что лежит в переменных. Сами инструкции показаны в таблице.

Qwerty_Wasd, А у меня в хроме работа со строкой оказалась быстрее.
Миниатюры
Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()  
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 17:23
sad67man, эм.. интересно. А можете обновить хром и запустить тест еще раз? Если не трудно конечно.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
17.06.2018, 17:24
kalabuni, В пользу array могу сказать, что это более надежно. При использовании строки невольно задумываешься, а что если передадут некорректный параметр. К примеру 'abc', или пустую строку (тогда indexOf вернет 0).
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 17:28
если результат окажется тем же - считайте он скомпрометирован.

Добавлено через 2 минуты
Цитата Сообщение от sad67man Посмотреть сообщение
При использовании строки невольно задумываешься, а что если передадут некорректный параметр
это не проблема метода.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
17.06.2018, 17:28
Qwerty_Wasd,
Миниатюры
Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()  
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 17:31
sad67man, ну вот мы и в начале
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
зависит еще и от конкретного движка, ведь у каждого своя реализация API.
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Создатели стандарта к примеру делегировали этот метод. То есть разницы в исполнении никакой. Тесты выше подтверждают лишь то, что я сказал о разных движках.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
17.06.2018, 17:36
Qwerty_Wasd, Ну есть нюансы, array.indexOf чувствителен к типу в отличие от string.indexOf, где параметр всегда приводится к строке.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 17:45
Цитата Сообщение от sad67man Посмотреть сообщение
array.indexOf чувствителен к типу в отличие от string.indexOf, где параметр всегда приводится к строке
и как это коррелирует с
The indexOf function is intentionally generic; it does not require that its this value be an Array object. Therefore it can be transferred to other kinds of objects for use as a method.
Добавлено через 2 минуты
Эти нюансы не проблема метода. При прочих равных, метод един.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
17.06.2018, 17:53
Qwerty_Wasd,
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Эти нюансы не проблема метода. При прочих равных, метод един.
Ну мы же обсуждаем конкретную задачу, если раскритиковали использование строки, то на то должны быть причины) я пытаюсь найти какую-нибудь информацию по этому поводу) В целом оба способа идентичны.
Но если уже вопрос стоит ребром, то взвесив все нюансы, я больше склоняюсь все-таки к использованию array.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 18:07
sad67man,
Цитата Сообщение от sad67man Посмотреть сообщение
Ну мы же обсуждаем конкретную задачу
все верно ) При прочих равных условиях, какой метод наиболее предпочтителен? Указание стандарта - метод общий для всех. То есть предпочтение становится личным. А вот
Цитата Сообщение от sad67man Посмотреть сообщение
если раскритиковали использование строки
кто эти люди? Что они из себя представляют? Прошу не счесть за грубость - мне к примеру не интересны замечания(нет профита), которые идут напрямую вразрез с шаблонной ситуацией(противоречия со стандартом). Это я не только про эти
якобы с массивами в принципе всё работает проще, быстрее и экономнее
. Видел перлы и посмешнее )) В личку могу даже примеры скинуть.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
17.06.2018, 20:14  [ТС]
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
как ЭТО было обосновано
как-то так: "вариант со строкой рассматривать вовсе не будем, ведь даже ежу понятно, что с массивом работать проще, быстрее и менее ресурсоёмко, и вообще для работы со строками javascript не предназначен, это ведь не Perl!"

Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
кто эти люди? Что они из себя представляют?
они мне зарплату платят
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 20:17
kalabuni,
Цитата Сообщение от kalabuni Посмотреть сообщение
они мне зарплату платят
тогда для Вас это критично И раз ежу понятно(уже ненавижу ежей, слишком умные), вариантов у Вас нет Но если вычеркнуть это из уравнения, не поделитесь в личке как контора обзывается? Даю слово, что не стану использовать эту информацию кому бы то ни было во вред.

Добавлено через 1 минуту
Цитата Сообщение от kalabuni Посмотреть сообщение
вообще для работы со строками javascript не предназначен
вот это особенно доставило
0
18.06.2018, 06:42

Не по теме:

Цитата Сообщение от kalabuni Посмотреть сообщение
функции передаётся буква алфавита в нижнем регистре и она должна вернуть следующую по очереди букву алфавита в нижнем регистре
при этом если на входе последняя буква алфавита z, то вернуться должна первая буква алфавита a
Цитата Сообщение от kalabuni Посмотреть сообщение
javascript не предназначен, это ведь не Perl!
Если вдруг кому интересно, на Perl ( раз он был тут всуе упомянут ) требуемую функцию можно реализовать вот так:
( без кольцевых массивов и без строк из 26 символов )
Perl
1
2
3
4
5
6
7
8
9
10
11
sub succ($)
{
    my $letter = substr( shift, 0, 1 );         # у переданного аргумента отсекаем всё, кроме первой буквы
    return substr( ++$letter, 0, 1);            # магический перловый ++ оператор
}
 
# проверяем
print succ('a');           # вернёт 'b'
print succ('z');           # вернёт  'a'
print succ('ZHOPP');       # вернёт 'A'
print succ();              # ругнётся 'Not enough arguments for main::succ'

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2018, 06:42
Помогаю со студенческими работами здесь

indexOf
как сделать чтобы если вводилось число дало ошибку function test1() {if (first.text1.value == '' || first.text1.value.indexOf(' ',0)...

IndexOf
Всем здравствуйте. Очередной вопрос от чайника. ) Есть var x = 5 \\или любое другое число (вводится через var x = prompt('') var...

IndexOf script
Условие: Есть переменная var mySite = "http://billgates.com"; Вам надо написать функцию, которая примет эту переменную в качестве...

IndexOf не работает
<SCRIPT> function checktext() { var BSS="<>&!*#$%^&()_-=+?&"; var...

IndexOf перенос строки
Господа, такой вот вопрос. Есть текст в txt формате. Через запрос (ajax) получаю к нему доступ и полученный текст нужно поместить в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru