Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для Rockman
17 / 17 / 4
Регистрация: 16.09.2010
Сообщений: 128

Разобрать функцию js

19.06.2014, 01:18. Показов 1074. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, имеется js функция, нужно написать ее на c#, но js не знаю. Помогите пожалуйста если не переписать функцию на c#, то хотя бы привести ее в более читабельный и подробный вид для человека не знающего js.

JavaScript
1
2
3
4
5
function code(key, item_id)
{
var pre = key.match(/[0-9a-f]+/g),mixed=(item_id%2===0?pre.reverse():pre).join(''),s=mixed.length, r='',k;for(k=0;k<s;++k){if(k%3===0){r+=mixed.substring(k,k+1);}}
return r;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2014, 01:18
Ответы с готовыми решениями:

Разобрать функцию
Доброго времени суок. Читая вот эту статью http://habrahabr.ru/post/252021/ на всеми любимом хабре у меня возник Чт а самое главное КАК...

Разобрать функцию isupper
Строка кода выше подразумевалось что, сылка в числителе была бы относительной, а в знаменателе потсоянным. То есть адрес в знаменателе был...

Не могу разобрать функцию
Не могу понять суть функции, прокоментируйте пожайлуста кто может... function getErrMsg(&amp;$r, $flag = True){ $rc = 0; $err =...

4
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
19.06.2014, 02:49
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function code (key, item_id) 
     // функции code () передаются в качестве аргументов строка символов key и целое число item_id
{
var pre = key.match (/[0-9a-f]+/g);
     // в строке key находятся все подстроки из рядом стоящих букв от a до f нижнего регистра и цифр
     // и из найденного формируется массив подстрок pre
var mixed = (item_id % 2 === 0 ? pre.reverse () : pre).join ('');
     // если число item_id является чётным, то массив pre переворачивается
     // получившийся массив "склеивается" в строку mixed
var s = mixed.length;
     // в целой переменной s запоминается количество символов в строке mixed
var r = '';
     // строковой переменной r присваивается пустое начальное значение
 
for (var k = 0; k < s; ++k)
     // организуется цикл по целому индексу k от нуля до s - 1 включительно с единичным инкрементом
if (k % 3 === 0) {r += mixed.substring (k, k + 1)}
     // из строки mixed "вытаскиваются" символы, индексы которых кратны трём, и конкатенируются к строке r
 
return r;
     // функция возвращает строку r
}
строки #15 и #17 написаны не очень грамотно - рациональнее было бы организовать цикл с инкрементом 3, вот так:
JavaScript
1
2
for (var k = 0; k < s; k += 3)
r += mixed.substring (k, k + 1);
1
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,531
19.06.2014, 06:43
Цитата Сообщение от kalabuni Посмотреть сообщение
получившийся массив "склеивается" в строку mixed
Наверно не склеивается, а преобразуется или создаётся.
0
 Аватар для Rockman
17 / 17 / 4
Регистрация: 16.09.2010
Сообщений: 128
19.06.2014, 12:30  [ТС]
Спасибо за подробный ответ!
Переписал алгоритм на c#. Функция работает правильно при нечетном item_id но когда item_id четный то возвращается, не то что ожидается. Вроде бы просто массив переворачиваю ничего больше ...

Добавлено через 7 минут
Перепроверил еще раз, переворачивал не так как нужно )
Сейчас все работает отлично! Спасибо за помощь!

Добавлено через 1 час 18 минут
Нет, все таки при четном item_id возвращает не то что нужно

Добавлено через 23 минуты
Сама JS функция возвращает иное значение при четном item_id. Но когда в своей c# функции я делаю reverse то возвращается неверная строка.

Как именно выполняется reverse в js? Почитал вроде бы все точно так же просто переворачивается массив. В чем может быть проблема? Может в исходной js функции не просто перевернуть нужно или что то еще требуется?
0
388 / 275 / 76
Регистрация: 19.09.2011
Сообщений: 828
20.06.2014, 20:05
Rockman, на шарпе пишу впервые
C#
1
2
3
4
5
6
7
8
9
10
11
12
static string code(string key, int item_id){
    string[] pre = Regex.Split(key, @"[^0-9a-f]+");
    if(item_id % 2 == 0){
        Array.Reverse(pre);
    }
    string mixed = String.Concat(pre);
    string result = "";
    for (int i = 0; i < mixed.Length; i += 3){
        result += mixed[i];
    }
    return result;
}
с таким тестом на шарпе и js выдает одно и то же
C#
1
2
3
4
5
string[] test = {
    "123asd asdf asdfa dfz <xclvapdof p",
    "asdfjhaodfckxvmpadf",
    "12743982qetoahdfgkns 8y5tp9ser"
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.06.2014, 20:05
Помогаю со студенческими работами здесь

Разобрать функцию, принимающую аргументы
Ребята , не разобрался в функциях , отсюда к возник вопрос. вот есть задачка (прикрепил ниже) вот смастерил кое как код. #include...

Нужно разобрать функцию генерирования Id
Зачем нужно сразу 2 переменных ведь хватило бы только $sec или только $usec?Или каждой переменной набор цифр(микротайм) присваивается и они...

Разобрать и прокомментировать рекурсивную функцию
Здравствуйте, начал изучать Си сравнительно недавно, помогите разобрать код &quot;по полочкам&quot;. int f(int start, int end){ int...

Разобрать функцию вычитывания длинных чисел
Есть у меня функция вычитывания void vidnimannya(char a, int &amp;n, char b, int &amp;m) { char c; int i, j, o; //Дополняем нулями ...

Указатели - разобрать функцию, принимающую параметр
Есть функция: void handling(char **_names, bool *voarr, int pos){ char **names=new char*; for(int j=0; j&lt;N; ++j){ ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru