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的键:

可以打印看一下:


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

祝学习愉快!
相似问题