# setToArray
# Description
将set转换为其值的数组。
# Params
{Object} set
# Return
Array
# Code
function setToArray(set) {
let index = -1
const result = new Array(set.size)
set.forEach((value) => {
result[++index] = value
})
return result
}
# Analyze
- 根据 set.size 初始化数组长度
- set.forEach 遍历, 将值放到数组对应的下标中
# Remark
- Set.prototype.forEach() MDN (opens new window) 方法会根据集合中元素的插入顺序,依次执行提供的回调函数。
- 这里不能像 mapToArray 一样使用 entries 方法,会很复杂
- Set.prototype.entries() MDN (opens new window) 方法返回一个新的迭代器对象 ,这个对象的元素是类似 [value, value] 形式的数组,value 是集合对象中的每个元素,迭代器对象元素的顺序即集合对象中元素插入的顺序。由于集合对象不像 Map 对象那样拥有 key,然而,为了与 Map 对象的 API 形式保持一致,故使得每一个 entry 的 key 和 value 都拥有相同的值,因而最终返回一个 [value, value] 形式的数组。
const mySet = new Set();
mySet.add("foobar");
mySet.add(1);
mySet.add("baz");
const setIter = mySet.entries();
console.log(setIter.next().value); // ["foobar", "foobar"]
console.log(setIter.next().value); // [1, 1]
console.log(setIter.next().value); // ["baz", "baz"]
# Example
const set = new Set
for (let i = 0; i < 5; i++) {
set.add('value'+i)
}
console.log(setToArray(set)) // [ 'value0', 'value1', 'value2', 'value3', 'value4' ]
← SetCache setToPairs →