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

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

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

Author24 — интернет-сервис помощи студентам
функции передаётся буква алфавита в нижнем регистре и она должна вернуть следующую по очереди букву алфавита в нижнем регистре
при этом если на входе последняя буква алфавита z, то вернуться должна первая буква алфавита a
в общем, классический однонаправленный кольцевой список с уникальными пунктами
реализовать список можно как строкой из 26-ти символов, так и массивом из 26-ти элементов, а затем и там, и там использовать метод indexOf ()
что именно лучше использовать, и главное, обоснуйте, плиз: почему?
какой из двух вариантов быстрее и при этом потребует меньше ресурсов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2018, 03:16
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

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

Добавлено через 2 минуты
Цитата Сообщение от sad67man Посмотреть сообщение
При использовании строки невольно задумываешься, а что если передадут некорректный параметр
это не проблема метода.
0
2235 / 1281 / 611
Регистрация: 23.08.2015
Сообщений: 3,230
17.06.2018, 17:28 12
Qwerty_Wasd,
Миниатюры
Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()  
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 17:31 13
sad67man, ну вот мы и в начале
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
зависит еще и от конкретного движка, ведь у каждого своя реализация API.
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Создатели стандарта к примеру делегировали этот метод. То есть разницы в исполнении никакой. Тесты выше подтверждают лишь то, что я сказал о разных движках.
0
2235 / 1281 / 611
Регистрация: 23.08.2015
Сообщений: 3,230
17.06.2018, 17:36 14
Qwerty_Wasd, Ну есть нюансы, array.indexOf чувствителен к типу в отличие от string.indexOf, где параметр всегда приводится к строке.
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 17:45 15
Цитата Сообщение от 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
2235 / 1281 / 611
Регистрация: 23.08.2015
Сообщений: 3,230
17.06.2018, 17:53 16
Qwerty_Wasd,
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Эти нюансы не проблема метода. При прочих равных, метод един.
Ну мы же обсуждаем конкретную задачу, если раскритиковали использование строки, то на то должны быть причины) я пытаюсь найти какую-нибудь информацию по этому поводу) В целом оба способа идентичны.
Но если уже вопрос стоит ребром, то взвесив все нюансы, я больше склоняюсь все-таки к использованию array.
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
17.06.2018, 18:07 17
sad67man,
Цитата Сообщение от sad67man Посмотреть сообщение
Ну мы же обсуждаем конкретную задачу
все верно ) При прочих равных условиях, какой метод наиболее предпочтителен? Указание стандарта - метод общий для всех. То есть предпочтение становится личным. А вот
Цитата Сообщение от sad67man Посмотреть сообщение
если раскритиковали использование строки
кто эти люди? Что они из себя представляют? Прошу не счесть за грубость - мне к примеру не интересны замечания(нет профита), которые идут напрямую вразрез с шаблонной ситуацией(противоречия со стандартом). Это я не только про эти
якобы с массивами в принципе всё работает проще, быстрее и экономнее
. Видел перлы и посмешнее )) В личку могу даже примеры скинуть.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
17.06.2018, 20:14  [ТС] 18
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
как ЭТО было обосновано
как-то так: "вариант со строкой рассматривать вовсе не будем, ведь даже ежу понятно, что с массивом работать проще, быстрее и менее ресурсоёмко, и вообще для работы со строками javascript не предназначен, это ведь не Perl!"

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

Добавлено через 1 минуту
Цитата Сообщение от kalabuni Посмотреть сообщение
вообще для работы со строками javascript не предназначен
вот это особенно доставило
0
volodin661
18.06.2018, 06:42     Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()
  #20

Не по теме:

Цитата Сообщение от 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2018, 06:42

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru