本篇内容介绍了“在什么时候适合使用Map”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!「Map」映射是一种经典的数据结构类型,其中数据以 「key/value」 的键值对形式存在Map 基本用法除了NaN比较特殊外,其他「Map」的get方法都是通过对比键名是否相等(===)来获取,不相等则返回undefined比较 Map 和 Object定义这里可以明显看出其实其定义行为是十分相似的,想必看到这里大家还没看出来「Map」到底在何时使用才是最佳实践,别急接着来。键名类型JavaScript 「Object」只接收两种类型的键名 String 和 Symbol,你可以使用其他类型的键名,但是最终 JavaScript 都会隐式转换为字符串再来看看 「Map」 的,其接收任何类型的键名并保留其键名类型 (此处简单举例,详细可看文章开头「Map」基本使用)「Map」支持正则表达式作为键名,这在Object是不被允许的直接报错原型 Prototype「Object」不同于「Map」,它不仅仅是表面所看到的。「Map」只包含你所定义的键值对,但是「Object」对象具有其原型中的一些内置属性如果操作不当没有正确遍历对象属性,可能会导致出现问题,产生你意料之外的 bug这个例子灵感来源于《Effective TypeScript》[1]一书迭代器「Map」 是可迭代的,可以直接进行迭代,例如forEach循环或者for…of…循环但是对于「Object」是不能直接迭代的,当你尝试迭代将导致报错这时候你就需要一个额外的步骤来检索其键名、键值或者键值对当然也可以使用for…in…进行遍历循环键名元素顺序和长度Map 保持对长度的跟踪,使其能够在O(1)复杂度中进行访问而另一方面,对于「Object」而言,想要获得对象的属性长度,需要手动对其进行迭代,使其为O(n)复杂度,属性长度为n在上文提及的示例中,我们可以看到「Map」始终保持按插入顺序返回键名。但「Object」却不是。从 ES6 开始,String和Symbol键是按顺序保存起来的,但是通过隐式转换保存成String的键就是乱序的Object/Map 何为最佳实践如上就是 「Map」 和 「Object」 的基本区别,在解决问题考虑两者的时候就需要考虑两者的区别。当插入顺序是你解决问题时需要考虑的,并且当前需要使用除 String 和 Symbol 以外的键名时,那么 「Map」 就是个最佳解决方案如果需要遍历键值对(并且需要考虑顺序),那我觉得还是需要优先考虑 「Map」。Map是一个纯哈希结构,而Object不是(它免费云主机、域名拥有自己的内部逻辑)。Map 在频繁增删键值对的场景下表现更好,性能更高。因此当你需要频繁操作数据的时候也可以优先考虑 Map再举一个实际的例子,比如有一个自定义字段的用户操作功能,用户可以通过表单自定义字段,那么这时候最好是使用 Map,因为很有可能会破坏原有的对象此时用户自定义的 toString 就会破坏到原有的对象 而 「Map」 键名接受任何类型,没有影响当你需要处理一些属性,那么 「Object」 是完全受用的,尤其是需要处理 JSON 数据的时候。由于 「Map」 可以是任意类型,因此没有可以将其转化为 JSON 的原生方法。当你需要通正则表达式判断去处理一些业务逻辑时,「Map」将是你的最佳解决方案利用数组循环的特性,符合正则条件的逻辑都会被执行,那就可以同时执行公共逻辑和单独逻辑,因为正则的存在,你可以打开想象力解锁更多的玩法,更多相关 Map 用法样例可以查看JavaScript 复杂判断的更优雅写法“在什么时候适合使用Map”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注云技术网站,小编将为大家输出更多高质量的实用文章!
本篇内容介绍了“jquery如何判断某个元素是否显示”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,免费云主机、域名接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 在jquery中,可用“:visible”选…