面试常问:数组遍历forEach和map的区别

简介: 一.forEach的用法:二.map的用法:

一.forEach的用法:

let arr = ["a", "b", "c", "1", "2", 3];
    var a = arr.forEach(function (value, index, arr) {
        //console.log(arr[index]); // 打印结果为 "a", "b", "c", "1", "2", 3
        return value + value;
    })
console.log("forEach返回值:", a); // undefined


二.map的用法:

let arr = ["a", "b", "c", "1", "2", 3];
var b = arr.map(function (value, index, arr) {
        //console.log(arr[index]); // 打印结果为 "a", "b", "c", "1", "2", 3
        return value + value;
    })
 console.log("map返回值:", b); // ['aa', 'bb', 'cc', '11', '22', 6]


fb25ff02e4af4f35a9e67cdc0cc1cb7a.png


三.总结:

数组常用遍历方法:
            1. forEach(function(value, index, arr){}); // for循环的加强版
            value: 数组中的每一个元素
            index: 下标/索引
            arr: 数组本身
            会改变原数组 没有返回值
            直接引入当前遍历数组的内存地址 类似于浅拷贝的套路
            2.map(function(value, index, arr){}); // for循环的加强版
            value: 数组中的每一个元素
            index: 下标/索引
            arr: 数组本身
            有返回值 不改变原数组(形成了新的数组)
            形成了新的数组, 地址和值都改变 类似于深拷贝
            forEach() <===> for(let i = 0; i < arr.length; i++){}<==>map()

相同点:都能遍历数组

不同点:map:有返回值 不改变原数组 形成了新的数组, 地址和值都改变 类似于深拷贝

             forEach:会改变原数组 没有返回值,相当于forEach遍历是直接引入当前遍历数组的内存地址

类似于浅拷贝

下期了解一下堆和栈的概念以及深拷贝浅拷贝

相关文章
|
1月前
|
存储 缓存 安全
面试题-HashMap底层原理与HashTable的区别
字节跳动面试题-HashMap底层原理与HashTable的区别
33 0
|
2月前
|
编译器 C++ Python
【C/C++ 泡沫精选面试题02】深拷贝和浅拷贝之间的区别?
【C/C++ 泡沫精选面试题02】深拷贝和浅拷贝之间的区别?
43 1
|
20天前
|
存储 安全 Java
[Java基础面试题] Map 接口相关
[Java基础面试题] Map 接口相关
|
20天前
|
Java
面试官:你知道Comparable 和 Comparator 的区别吗?我:巴拉巴拉
面试官:你知道Comparable 和 Comparator 的区别吗?我:巴拉巴拉
22 1
|
20天前
|
Java
面试官:小伙子来说一说Java中final关键字,以及它和finally、finalize()有什么区别?
面试官:“小伙子,用过final关键字吗?” 我:“必须用过呀” 面试官:“好,那来说一说你对这个关键字的理解吧,再说一说它与finally、finalize()的区别” 我:“好嘞!
19 1
|
21天前
|
存储 安全 Java
面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别
面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别
39 8
|
1月前
|
存储 SQL NoSQL
面试题:char和varchar的区别?
字节面试题:char和varchar的区别?
28 0
|
1月前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
40 0
|
1月前
|
算法 C++ 索引
【力扣经典面试题】238. 除自身以外数组的乘积
【力扣经典面试题】238. 除自身以外数组的乘积
|
1月前
|
机器学习/深度学习 算法
【力扣经典面试题】189. 轮转数组
【力扣经典面试题】189. 轮转数组