супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
1 | |
Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()17.06.2018, 03:16. Показов 2363. Ответов 23
Метки нет (Все метки)
функции передаётся буква алфавита в нижнем регистре и она должна вернуть следующую по очереди букву алфавита в нижнем регистре
при этом если на входе последняя буква алфавита z, то вернуться должна первая буква алфавита a в общем, классический однонаправленный кольцевой список с уникальными пунктами реализовать список можно как строкой из 26-ти символов, так и массивом из 26-ти элементов, а затем и там, и там использовать метод indexOf () что именно лучше использовать, и главное, обоснуйте, плиз: почему? какой из двух вариантов быстрее и при этом потребует меньше ресурсов?
0
|
17.06.2018, 03:16 | |
Ответы с готовыми решениями:
23
Модифицировать метод Array.prototype.indexOf () так, чтобы первым его параметром был вектор из нескольких элементов Проблемы с методом массива (Array.prototype.p=1 var arr=new Array(); arr.watch('p',alertme) arr.p=2) Prototype это свойство или атрибут? indexOf |
dev - investigator
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
|
|
17.06.2018, 03:19 | 2 |
kalabuni,приветствую. Цитирую ecma-international
смотрим Note 2
0
|
супермизантроп
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
|
супермизантроп
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
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
|
|
17.06.2018, 16:06 | 6 |
sad67man, kalabuni, думается мне, что это зависит еще и от конкретного движка, ведь у каждого своя реализация API.
0
|
dev - investigator
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
|
|
17.06.2018, 16:11 | 7 |
В хроме работа с массивом оказалась быстрее. В мозиле наоборот. Ну IE так до кучи
Добавлено через 3 минуты а могу я узнать как ЭТО было обосновано. Создатели стандарта к примеру делегировали этот метод. То есть разницы в исполнении никакой. Тесты выше подтверждают лишь то, что я сказал о разных движках.
0
|
2235 / 1281 / 611
Регистрация: 23.08.2015
Сообщений: 3,230
|
|
17.06.2018, 16:54 | 8 |
На сколько я понимаю, задание переменных происходит до тестов, просто показывается, что лежит в переменных. Сами инструкции показаны в таблице.
Qwerty_Wasd, А у меня в хроме работа со строкой оказалась быстрее.
0
|
dev - investigator
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
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
|
|
17.06.2018, 17:28 | 11 |
если результат окажется тем же - считайте он скомпрометирован.
Добавлено через 2 минуты это не проблема метода.
0
|
2235 / 1281 / 611
Регистрация: 23.08.2015
Сообщений: 3,230
|
|
17.06.2018, 17:28 | 12 |
Qwerty_Wasd,
0
|
dev - investigator
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
|
|
17.06.2018, 17:31 | 13 |
0
|
2235 / 1281 / 611
Регистрация: 23.08.2015
Сообщений: 3,230
|
|
17.06.2018, 17:36 | 14 |
Qwerty_Wasd, Ну есть нюансы, array.indexOf чувствителен к типу в отличие от string.indexOf, где параметр всегда приводится к строке.
0
|
dev - investigator
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
|
|
17.06.2018, 17:45 | 15 |
и как это коррелирует с
Эти нюансы не проблема метода. При прочих равных, метод един.
0
|
2235 / 1281 / 611
Регистрация: 23.08.2015
Сообщений: 3,230
|
|
17.06.2018, 17:53 | 16 |
Qwerty_Wasd,
Ну мы же обсуждаем конкретную задачу, если раскритиковали использование строки, то на то должны быть причины) я пытаюсь найти какую-нибудь информацию по этому поводу) В целом оба способа идентичны.
Но если уже вопрос стоит ребром, то взвесив все нюансы, я больше склоняюсь все-таки к использованию array.
0
|
dev - investigator
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
|
|
17.06.2018, 18:07 | 17 |
sad67man,
все верно ) При прочих равных условиях, какой метод наиболее предпочтителен? Указание стандарта - метод общий для всех. То есть предпочтение становится личным. А вот
кто эти люди? Что они из себя представляют? Прошу не счесть за грубость - мне к примеру не интересны замечания(нет профита), которые идут напрямую вразрез с шаблонной ситуацией(противоречия со стандартом). Это я не только про эти
0
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
17.06.2018, 20:14 [ТС] | 18 |
как-то так: "вариант со строкой рассматривать вовсе не будем, ведь даже ежу понятно, что с массивом работать проще, быстрее и менее ресурсоёмко, и вообще для работы со строками javascript не предназначен, это ведь не Perl!"
они мне зарплату платят
0
|
dev - investigator
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
|
|
17.06.2018, 20:17 | 19 |
kalabuni,
тогда для Вас это критично И раз ежу понятно(уже ненавижу ежей, слишком умные), вариантов у Вас нет Но если вычеркнуть это из уравнения, не поделитесь в личке как контора обзывается? Даю слово, что не стану использовать эту информацию кому бы то ни было во вред.
Добавлено через 1 минуту вот это особенно доставило
0
|
volodin661
|
|||||
18.06.2018, 06:42
Какой из методов рациональнее использовать: Array.prototype.indexOf() или String.prototype.indexOf()
#20
|
|||||
Не по теме: Если вдруг кому интересно, на Perl ( раз он был тут всуе упомянут ) требуемую функцию можно реализовать вот так: ( без кольцевых массивов и без строк из 26 символов )
0
|
18.06.2018, 06:42 | |
IndexOf IndexOf script IndexOf не работает IndexOf перенос строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |