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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

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, '');

Всего записей: 1367 | Зарегистр. 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'));


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

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

Всего записей: 1367 | Зарегистр. 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);
 
вопросы ну просто.. никакие..

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

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

Всего записей: 1367 | Зарегистр. 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');
 
выглядит даже более читаемым

Всего записей: 15113 | Зарегистр. 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;
                        };
                    }
                },

Всего записей: 1367 | Зарегистр. 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;  // они одинаковые
})

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

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

Всего записей: 1367 | Зарегистр. 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. но вам нужно указать по каким параметрам сортировать.

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

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

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

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

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

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

Всего записей: 15113 | Зарегистр. 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.
   

Всего записей: 1367 | Зарегистр. 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);
                            })

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

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

Всего записей: 1367 | Зарегистр. 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()
потому что по умолчанию уже так сортирует.
 

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

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

Всего записей: 15113 | Зарегистр. 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]}));


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

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

Всего записей: 1367 | Зарегистр. 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;
                        };

Всего записей: 15113 | Зарегистр. 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.
 
Кстати, на более крупной базе не срабатывает ни сортировка, ни ваша модернизация обработки пустых значений, хотя всё быстро загружается и тп.

Всего записей: 1367 | Зарегистр. 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
 

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

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

Всего записей: 15113 | Зарегистр. 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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru