Map数组去重时,参数使用二维数组,键值问题

来源:3-11 项目作业

困惑小张

2022-07-06 17:38:22

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    <script>

        const arr = [1, 1, '1', 17, true, true, false, false, 'true', 'a', {}, {}];

        //方法一:使用Set

        let s=new Set(arr);

        let arr1=[];

        s.forEach(value=>arr1.push(value));

        console.log(arr1);


        //方法二:使用Map

        let arr2=[];

        for(let i=0;i<arr.length;i++){

            arr2.push([arr[i],i]);

        }

        let m=new Map(arr2);

        let arr3=[];

        m.forEach(key=>arr3.push(key));

        console.log(arr3);


        //方法三:使用数组的reduce方法

        let arr4=arr.reduce((prev,next)=>{

            prev.indexOf(next)==-1 && prev.push(next);

            return prev;

        },[]);


        console.log(arr4);


    </script

</body>

</html>


方法二使用Map时,明明我设置的是将arr[i]作为键值,为什么arr3.push(key)时返回的是i的值?

写回答

1回答

好帮手慕久久

2022-07-06

同学你好,方法1和方法3是对的。对于方法2,同学可能记混了。遍历map对象时,第二个参数才是map的键:

https://img.mukewang.com/climg/62c559c70971c70505060384.jpg

可以打印看一下:

https://img.mukewang.com/climg/62c55a1c09463d9205790489.jpg


https://img.mukewang.com/climg/62c55a3709d219fb09880462.jpg

因此要往arr3中push第二个参数:

https://img.mukewang.com/climg/62c55a5b09a7571505120468.jpg

祝学习愉快!

0

前端工程师

前端入门如同写字,如果你不知道从哪开始,那就选择前端(含Vue3.x,React17,TS)

20327 学习 · 17877 问题

查看课程