首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Js map 函数

[[1, 2], [3, 4]].map(([a, b]) => a + b); 我在阮一峰老师ES6里看到这个 map 就想起了之前看到一个面试题。...["1", "2", "3"].map(parseInt); //[1,NaN,NaN] 这个 map 函数功能是啥都不知道,很尴尬… map() 方法返回一个由原数组中每个元素调用一个指定方法后返回值组成新数组...通常情况下,map 方法中 callback 函数只需要接受一个参数(很多时候,自定义函数形参只有一个),就是正在被遍历数组元素本身。...map方法在调用callback函数时,会给它传递三个参数:当前正在遍历元素, 元素索引, 原数组本身....第三个参数parseInt会忽视, 但第二个参数不会,也就是说,parseInt把传过来索引值当成进制数来使用.从而返回了NaN. ["1", "2", "3"].map(function(){

8.1K30

js Map用法

作为 ECMAScript 6 新增特性,Map 是一种新集合类型,为这门语言带来了真正键/值存储机制。Map 大多数特性都可以通过 Object 类型实现,但二者之间还是存在一些细微差异。...不同浏览器情况不同,但给定固定大小内存,Map 大约可以比 Object 多存储 50%键/值对。...如果代码涉及大量插入操作,那么显然 Map 性能更佳。...在把 Object 当成数组使用情况下(比如使用连续整数作为属性),浏览器引擎可以进行优化,在内存中使用更高效布局。这对 Map 来说是不可能。...但很多时候,这都是一种讨厌或不适宜折中。而对大多数浏览器引擎来说,Map delete()操作都比插入和查找更快。 如果代码涉及大量删除操作,那么毫无疑问应该选择 Map

8.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js forEach和 map 区别

    () map() 方法创建一个新数组,这个新数组由原数组中每个元素都调用一次提供函数后返回值组成。...因为 map 生成一个新数组,当你不打算使用返回新数组却使用 map 是违背设计初衷,请用 forEach 或者 for-of 替代。...如果有以下情形,则不该使用 map: 你不打算使用返回新数组;或 你没有从回调函数中返回值。...调用 map 方法之后追加数组元素不会被 callbackFn 访问。如果存在数组元素改变了,那么传给 callbackFn 值是 map 访问该元素时值。...在 map 函数调用后但在访问该元素前,该元素被删除的话,则无法被访问到。 根据规范中定义算法,如果被 map 调用数组是离散,新数组将也是离散保持相同索引为空。

    4.6K30

    JS (Weak)Set 和 (Weak)Map

    它和 JS 对象不同,JS 对象只能用字符串和Symbol作为键,而Map可以使用任何值。 除了键类型上不同,它和Object还有以下不同: Map键值是有序,而添加到对象中键则不是。...每个键值对都会添加到新Map。...var merged = new Map([...first, ...second]); Map 原型属性 除了constructor,Map原型上还有一个size属性,它返回Map对象键值对数量。...Map 原型方法 Map一共有 10 个原型方法。 set(key, value) 为Map对象添加或更新一个指定了键(key)和值(value)(新)键值对。它返回Map对象。...它包含按顺序插入Map对象中每个元素value值。 entries() 返回一个新包含[key, value]对Iterator对象,返回迭代器迭代顺序与Map 对象插入顺序相同。

    2.1K20

    JS 中为啥 .map(parseInt) 返回

    Javascript 一直是神奇语言。 不相信我? 尝试使用map和parseInt将字符串数组转换为整数。...真值(truthy) & 虚值(falsy) 以下是 JS 中一个简单if-else语句: if (true) { // this always runs } else { // this...falsy(虚值)是在 Boolean 上下文中已认定可转换为‘假‘值。 JS对象不是真值就是虚值。 令人困惑是,这意味着字符串“false”,字符串“0”,空对象{}和空数组[]都是真的。...你可能已经注意到,在我们示例中,当输入为11时,parseInt返回3,这对应于上表中二进制列。 函数参数 JS 中函数调用,我们可以传入任意参数,即使它们不等于声明时函数参数数量。...[3, 6, 9, 12, 15]; 现在,将console.log作为参数传给 map,来打印数组元素: [1, 2, 3, 4, 5].map(console.log); 等价于 [1,

    4.7K30

    何时使用 Map 来代替普通 JS 对象

    在这种情况下不会有错误: const names = { 1: 'One', 2: 'Two', }; Object.keys(names); // => ['1', '2'] JS 会隐式地将对象键转换为字符串...Map 接受任何类型键 如前所述,如果对象键不是 string 或 symbol,JS 将隐式地将其转换为字符串。...2. map 对键名没有限制 JS任何对象都从原型对象继承属性,普通对象也是如此。...map 提供了返回可迭代方法:map.keys() 遍历键,map.values() 遍历值 4. map 大小 普通对象另一个问题是,您无法立马知道它包含属性数量。...总结 普通 JS 对象通常可以很好地保存结构化数据,但它们也有一些局限性: 只能用字符串或 sybmol 作为键 自己对象属性可能会与从原型继承属性键冲突(例如 toString,constructor

    2.2K20

    怀英漫谈4-JSMap

    今天就想和你聊聊这个类似Map逻辑。 一开始并没有搜到JSMap用法,所以才采用了双重循环逻辑。...11月份在刚开始做这个功能时候,是有在网上查过JSMap用法,网上大多解决方案是用循环去模拟Map。理由是JS中并没有Map这个数据结构。...这种写法是我在查找如何遍历JS对象属性值时候偶然间发现。这种做法将Map数据结构和对象从相互独立关系变为了从属关系,Map是对象子集,是它一种表现方式。...简单点儿说就是,Map即对象,对象即Map。 如此一来,也解除了另外两个现象。一,Java后台返回Map,自动被解析为了JS对象。二,JS对象可以临时增添值,而对象内存地址值不变。...今天和你聊了聊我对JS中对象,一个新角度理解,希望能对你有所帮助。 清 单 在JS中,Map即对象,对象即Map

    1.4K60
    领券