Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Смотрел в другом браузере - то же самое. Хотел бы попробовать следующий код, но не пойму, как прописать более одной замены —

Код:
$("input").on('keyup', function() {
  let value = $(this).val();
  $(this).val(value.replace("1", '2'));
});

А именно, эти строки —

Код:
   obj.value = obj.value.replace(/[ё]/g, 'е');
   obj.value = obj.value.replace(/[́̀]/g, '');

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 21:22 11-04-2022 | Исправлено: D1D1D1D, 21:23 11-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
$(this).val(value.replace("1", '2').replace("3", '4'));


Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 22:22 11-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
А в двух строках как это будет?

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 00:04 12-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
А в двух строках как это будет?

зачем вам две строки?
$(this).val(
   value.replace("1", '2')
          .replace("3", '4')
);
устраивает?
 
что вам вообще мешает сделать сначала замену
 
value = value.replace("1", '2');
value = value.replace("3", '4');
а затем выставить
$(this).val(value);
 
вопросы ну просто.. никакие..

Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 01:22 12-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Пример с двумя строками нужен, так как замен будет много, для чего однострочный формат не подходит

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 01:36 12-04-2022 | Исправлено: D1D1D1D, 01:37 12-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Пример с двумя строками нужен, так как замен будет много, для чего однострочный формат не подходит

в js, как и написал, можно писать подряд, да хоть по функции на строчке.
поэтому
 
 
value = value
   .replace("1", '2')
   .replace("3", '4');
 
выглядит даже более читаемым

Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 01:52 12-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сюда в newItems по одному попадают пункты меню. Как отсортировать их все по алфавиту?
 

Код:
                headerFilter: {
                  dataSource: function(options){
                        options.dataSource.postProcess = function (results) {
                            let x = results.reduce(function(map, entry) {
                                let newItems = entry.value.split('|');
                                //--------------------------newItems.sort()
                                return map.concat(newItems);
                            }, [])
                            .filter((e, i , arr) => arr.indexOf(e) === i && e.length)
                            .map((e, i , arr) => ({text:e, value:['e', 'contains', e]}));
 
                            return x;
                        };
                    }
                },

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 08:42 12-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
так как это просто массив имен, то добавить в последовательность функций

Код:
.sort(function(a, b) {
  var nameA = получить из а имя;
  var nameB = получить из b имя;
  if (nameA < nameB) {
    return -1; // сначала nameA
  }
  if (nameA > nameB) {
    return 1; // сначала nameB
  }
  return 0;  // они одинаковые
})

Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 08:50 12-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
А как эту функцию прописать в код?

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 08:59 12-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
А как эту функцию прописать в код?

когда же вы начнете программировать самостоятельно? я специально написал с точкой, а это означает именно последовательность как у вас.
 
.map((e, i , arr) => ({text:e, value:['e', 'contains', e]}))
.sort(function(a, b) {
  var nameA = получить из а имя;
  var nameB = получить из b имя;
  if (nameA < nameB) {
    return -1; // сначала nameA
  }
  if (nameA > nameB) {
    return 1; // сначала nameB
  }
  return 0;  // они одинаковые
})
 
сделает сортировку после функции map. но вам нужно указать по каким параметрам сортировать.

Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 20:45 12-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Уровень пока сложный для меня, не въезжаю

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 21:59 12-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Уровень пока сложный для меня, не въезжаю

так почитайте сначала об основах javascript, не изучайте методом тыка.
https://learn.javascript.ru/

Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 22:16 12-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Вроде вот так надо вписывать, но не срабатывает:

Код:
 
.filter((e, i , arr) => arr.indexOf(e) === i && e.length)
.sort(function(a, b) {
  var nameA = a;
  var nameB = b;
  if (nameA < nameB) {
    return -1; // сначала nameA
  }
  if (nameA > nameB) {
    return 1; // сначала nameB
  }
  return 0;  // они одинаковые
}
)
//.map...

 
https://disk.yandex.ru/d/FwA4xd2_iCwprQ — файл "index.js", строка №230.
   

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 16:31 13-04-2022 | Исправлено: D1D1D1D, 16:31 13-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
да что же вы даже мелочи то..

Код:
                            .filter((e, i , arr) => arr.indexOf(e) === i && e.length)
                            .sort(function(a, b) {
                                return a < b ? -1 : (a > b ? 1 : 0);
                            })
                            .map((e, i , arr) => ({text:e, value:['e', 'contains', e]}));

если игнорируя заглавные или нет, то  

Код:
                            .sort(function(a, b) {
                                var a = a.toLowerCase(), b = b.toLowerCase();
                                return a < b ? -1 : (a > b ? 1 : 0);
                            })

Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 22:52 13-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо! Насчёт мелочи - я интересовался вопросом на одном форуме, так даже опытный программист озадачился, а мне и подавно простительно)
 
Интересно, возможно ли решение для случаев, когда одно из значений для фильтра пустое?
https://i.imgur.com/cvXg9Cr.jpg

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 00:14 14-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
                            .sort(function(a, b) {
                                return a < b ? -1 : (a > b ? 1 : 0);
                            })

вот тут, на самом деле, даже не нужно ничего такого делать. просто .sort()
потому что по умолчанию уже так сортирует.
 

Цитата:
возможно ли решение для случаев

решение чего?

Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 00:16 14-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Когда тестирую, только этот вариант срабатывает:

Код:
.filter((e, i , arr) => arr.indexOf(e) === i && e.length)
.sort(function(a, b) {
    return a < b ? -1 : (a > b ? 1 : 0);
})
.map((e, i , arr) => ({text:e, value:['e', 'contains', e]}));


Цитата:
решение чего?

Имелся в виду тот же заголовочный фильтр. Когда в базе одно из значений для крайнего столбца не прописано — пункты фильтра не подгружаются в браузере по кнопке, как на скрине выше, вместо этого вертится значок загрузки. Я так думаю, что отсутствует условие для пропуска пустых значений из базы.

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 00:46 14-04-2022 | Исправлено: D1D1D1D, 00:47 14-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Я так думаю, что отсутствует условие для пропуска

смотрим консоль браузера на сообщение об ошибке.
 

Цитата:
Когда тестирую, только этот вариант срабатывае

должен и когда просто .sort() там, без содержимого в круглых скобках.
 
ps: посмотрел за вас.

Цитата:
Uncaught TypeError: Cannot read properties of null (reading 'split')

так как пустое значение это null, а не строка, то и split не может примениться к нему, так как это метод встроенного объекта "строка".
проблема в
Цитата:
                                let newItems = entry.value.split('|');

 

Код:
                        options.dataSource.postProcess = function (results) {
                            let x = results.reduce(function(map, entry) {
                                let newItems = entry.value ? entry.value.split('|') : [];
                                return map.concat(newItems);
                            }, [])
                            .filter((e, i , arr) => arr.indexOf(e) === i && e.length)
                            .sort()
                            .map((e, i , arr) => ({text:e, value:['e', 'contains', e]}));
                            return x;
                        };

Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 01:23 14-04-2022 | Исправлено: Mavrikii, 01:35 14-04-2022
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Спасибо!

Цитата:
должен и когда просто .sort() там, без содержимого в круглых скобках.

Значит, у меня браузер подустарел — юзаю Cent Browser на основе Chromium 86.0.4240.198.
 
Кстати, на более крупной базе не срабатывает ни сортировка, ни ваша модернизация обработки пустых значений, хотя всё быстро загружается и тп.

Всего записей: 1520 | Зарегистр. 05-04-2010 | Отправлено: 02:19 14-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Значит, у меня браузер подустарел — юзаю Cent Browser на основе Chromium 86.0.4240.198.
 

не устарел, всегда так было
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
 

Цитата:
не срабатывает ни сортировка, ни ваша модернизация обработки пустых значений,

все срабатывает, не знаю куда смотрите.

Всего записей: 16612 | Зарегистр. 20-09-2014 | Отправлено: 02:23 14-04-2022 | Исправлено: Mavrikii, 02:25 14-04-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru