javascript - 使用特殊字符和 spec-char 优先级对映射键进行排序
问题描述
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)}
解决方案
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
一旦我将所有特殊字符的键复制到另一个 Map 对象中,然后我继续使用以下循环复制其余的其他键。
for (var tagValue in jiveTags) {
if (jiveTags[tagValue] !== sortJiveTags[tagValue]) {
sortJiveTags[tagValue] = jiveTags[tagValue];
}
}
推荐阅读
- javascript - 不确定我是否正确创建了进度加载/错误功能
- scikit-learn - 设置 scikit-learn GridSearchCV 的时间限制
- python-3.x - [[0]*m]*n 和 [[0 for i in range(0,m)] for j in range(0,n)] 之间的差异
- python - 使用 pyinstaller 将 .json 文件添加到 exe 文件
- ms-word - 如何通过链 pandoc -> sphinx 将 Word 文档转换为 html 文件并保留文档代码示例的选项卡
- python - 是否有使用熊猫限制旋转数据行数的功能?
- javascript - 如何在角度 7 中使用 ngFor 循环动态嵌套数组
- android-studio - Flutter未在Android Studio中显示颜色的色板列表
- progressive-web-apps - 是否可以在 PWA/Trusted Web Activity 应用程序中使用 Adsense?
- server - 为什么 perf 不适用于我的英特尔 Skylake 服务器中的精确事件?