#83 filter map

最后都变了- 提交于 2020-01-20 01:06:22
Map.prototype.filterKeys =  function(fn) {
  return new Map([...this].filter(([k, v]) => {
    return fn(k);
  }));
}

Map.prototype.filterValues = function(fn) {
  return new Map([...this].filter(([k, v]) => {
    return fn(v);
  }));
}

请你给原生的 Map 添加方法 filterKeys 和 filterValues,可以类似于于数组方法的 filter。它们分别可以对 Map 的键和值进行筛选,它们会返回一个新的 Map, 是对原有的 Map 的筛选结果,例如:

const m = new Map([['Jerry', 12], ['Jimmy', 13], ['Tomy', 14]])

m.filterKeys((key) => key.startsWith('J')) // => Map { Jerry => 12, Jimmy => 13 }
m.filterValues((val) => val >= 13) // => Map { Jimmy => 13, Tomy => 14  }

// 原有的 map 保持不变
console.log(m) // => Map { Jerry => 12 , Jimmy => 13, Tomy => 14 }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!