Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2022, 01:47
Аспирант
Отправить личное сообщение для hdma Посмотреть профиль Найти все сообщения от hdma
 
Регистрация: 28.05.2012
Сообщений: 85

Сортировка пунктов по алфавиту
Привет. Сюда в 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;
                        };
                    }
                },

Подсказали следующий код, но применить затрудняюсь:
.sort(function(a, b) {
  var nameA = получить из а имя;
  var nameB = получить из b имя;
  if (nameA < nameB) {
    return -1; // сначала nameA
  }
  if (nameA > nameB) {
    return 1; // сначала nameB
  }
  return 0;  // они одинаковые
})
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2022, 07:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

hdma,




.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//...

Последний раз редактировалось рони, 13.04.2022 в 07:45.
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2022, 11:45
Аспирант
Отправить личное сообщение для hdma Посмотреть профиль Найти все сообщения от hdma
 
Регистрация: 28.05.2012
Сообщений: 85

Увы, не сработало.
Ответить с цитированием
  #4 (permalink)  
Старый 13.04.2022, 12:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

hdma,
что не так?
<script>
        let results = [{
            value: 'b||||g|c'
        }, {
            value: 'm|f|c||a'
        }];
        let postProcess = function(results) {
            let x = results.reduce(function(map, entry) {
                    let newItems = entry.value.split('|');
                    return map.concat(newItems);
                }, [])
                .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((e, i, arr) => ({
                    text: e,
                    value: ['e', 'contains', e]
                }));

            return x;
        };

        let temp = postProcess(results);

        document.write(`<pre>${JSON.stringify(temp, "", 1)}</pre>`)
    </script>
Ответить с цитированием
  #5 (permalink)  
Старый 13.04.2022, 15:22
Аспирант
Отправить личное сообщение для hdma Посмотреть профиль Найти все сообщения от hdma
 
Регистрация: 28.05.2012
Сообщений: 85

рони,
возможно, это связано с особенностями виджета? Вот, прошу взглянуть — https://disk.yandex.ru/d/FwA4xd2_iCwprQ — файл "index.js", строка №230.

Проверяется из HTML-файла, по кнопке, как на скрине:

Последний раз редактировалось hdma, 13.04.2022 в 15:25.
Ответить с цитированием
  #6 (permalink)  
Старый 13.04.2022, 15:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

hdma,
могу только погадать, фильтр заголовков никак не влияет на позицию заголовков, и сортировать надо что-то другое.
Ответить с цитированием
  #7 (permalink)  
Старый 13.04.2022, 15:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

продолжение гадания, где-то надо включить параметр allowSorting : true и возможно описать этот метод.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
javascript сортировка option и value по алфавиту mopsusha Элементы интерфейса 55 21.06.2018 09:30
Сортировка двумерного массива по алфавиту Live it Общие вопросы Javascript 4 17.11.2014 14:21
Сортировка таблицы по алфавиту dozer Events/DOM/Window 6 18.10.2014 00:22
Скрипт составления списка ссылок и их сортировка по алфавиту Друг Работа 13 30.10.2010 16:56
сортировка по алфавиту mixa Общие вопросы Javascript 12 20.08.2008 03:24