1.用Map实现数组去重
function arrayNonRepeatfy(arr) {
let map = new Map();
let array = new Array(); // 数组用于返回结果
for (let i = 0; i < arr.length; i++) {
if(map .has(arr[i])) { // 如果有该key值
map .set(arr[i], true);
} else {
map .set(arr[i], false); // 如果没有该key值
array .push(arr[i]);
}
}
return array ;
}
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
console.log(unique(arr))
//[1, "a", "true", true, 15, false, 1, {…}, null, NaN, NaN, "NaN", 0, "a", {…}, undefined]
原理:创建一个空 Map 数据结构,遍历需要去重的数组,把数组的每一个元素作为 key 存到 Map 中。由于 Map 中不会出现相同的 key 值,所以最终得到的就是去重后的结果。
2.用Map的映射作用实现链接替换
对于toC的项目,对应C端项目会有app端和小程序端,这两种跳转至同一个页面的链接是不同的,后端管理系统是共用的,直接输入链接会造成有一端不适配的问题。这时候运用Map的映射作用就能很好的实现,比如后端管理系统跳转的是app的链接,小程序上可以这样处理。
//新建一个Map数据结构
let linkMap = new Map([
[APP链接1, 小程序链接1],
[APP链接2, 小程序链接2],
[APP链接3, 小程序链接3]
])
//跳转链接
wx.navigateTo({
url: linkMap.get(APP链接1)
})