set转换为数组 3.1.1 ES6 映射和集合

 2024-03-14 04:05:52  阅读 0

理解这个破程序确实有点困难。

var a = new Set([1, 2, 3]); 
var b = new Set([4, 3, 2]); 
var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}

因为这个程序中有几个知识点需要理解。

1.[...a]

[...a] 是将集合转换数组。 以后如果需要将集合转换成数组,基本都会使用这种方法。

数组转换为list集合_数组转换为对象_set转换为数组

2. [...a].()

Array.((x))依次将传入的函数(x)应用到每个元素上,x是该元素的值,然后根据返回值是true还是false来决定保留还是丢弃该元素。

这意味着遍历当前数组,当遍历到某个元素时,如果返回值为 false,则该元素会从数组中移除。

() 方法创建一个新数组,并检查新数组中的元素是否符合指定数组中的所有元素。

3. => 是缩写。

数组转换为list集合_set转换为数组_数组转换为对象

x => x * x 

相当于:

function(x){return x*x}

所以 x => b.has(x) 本质上是一个等价于 (x){ b.has(x)} 的函数。

4.b.有(x)

Set.has(x)是set中的一个方法。 即判断当前集合是否包含x。 如果存在,则返回 true,如果不存在,则返回 false。

所以这个程序也可以写成:

var a = new Set([1, 2, 3]); 
var b = new Set([4, 3, 2]); 
var arr = [...a];            //将a转换成数组
var fArr = arr.filter(function(x){    //使用filter过滤数组,并将新数组返回到fArr
    return b.has(x);        //判断b中是否含有a中的元素,没有则返回false
})
var intersect = new Set(fArr);          //将fArr转换成set
console.log(fArr);

冰块

134***

标签: 数组 元素 转换

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码