сортировать ключи карты по специальным символам и приоритетам spec-char - PullRequest
0 голосов
/ 07 декабря 2018
ES6 Map :

const map = new Map();
                map.set('first', ['1', '2']);
                map.set('second', ['abc', 'def']);
                map.set('_third', []);
                map.set(')(*', []);
                map.set('he__e', []);

                console.log(map);

Объект Map выполняет итерацию своих элементов в порядке вставки.

И я отсортировал карту с указанным ниже значением

var mapAsc = new Map([...map.entries()].sort());
console.log(mapAsc)

, но он выводит меня

0: {")(*" => Array(0)}
1: {"_third" => Array(0)}
2: {"first" => Array(2)}
3: {"he__e" => Array(0)}
4: {"second" => Array(2)}

таким образом, индекс '3' имеет специальные символы init?Я хочу, чтобы вывод был

0: {")(*" => Array(0)}
1: {"_third" => Array(0)}
2: {"he__e" => Array(0)}
3: {"first" => Array(2)}
4: {"second" => Array(2)}

1 Ответ

0 голосов
/ 07 декабря 2018
var jiveTags = new Map();

Я копирую здесь пример данных моего объекта:

 jiveTags = {
          dev: {
              tagName: "dev",
              contentID: Array(7),
              contentTypes: Array(2),
              tagURL: Array(1),
              occurrences: 7
            }
         }

//

var sortJiveTags = new Map();
    for (var tagValue in jiveTags) {
        for (var i = 0; i < tagValue.length; i++) {
          if (/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi.test(tagValue.charAt(i))) {
                  sortJiveTags[tagValue] = jiveTags[tagValue];
           }
         }
     }// 0(n2) order of n2

Как только я скопирую все специальные символьные клавиши в другой объект картыЗатем я копирую остальные ключи с помощью следующего цикла.

for (var tagValue in jiveTags) {
        if (jiveTags[tagValue] !== sortJiveTags[tagValue]) {
            sortJiveTags[tagValue] = jiveTags[tagValue];
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...