function print(txt) {
console.log(txt)
}
let set = new Set([2, 3, 4]);//用数组初始化set,会自动过滤掉重复元素,同时保持数组中原来元素的先后顺序
[5, 6, 7, 8, 7, 6, 5].forEach((p1, p2, p3) => {
set.add(p1)
});
for (let v of set) {
print(v)
}
// 2
// 3
// 4
// 5
// 6
// 7
// 8
print([...set]);//把set转换成数组,元素先后顺序不变
// [ 2, 3, 4, 5, 6, 7, 8 ]
let array = [2, 3, 4, 5, 4, 3, 2];
print(array);//[ 2, 3, 4, 5, 4, 3, 2 ]
array.forEach((p1, p2, p3) => print(p1));
// 2
// 3
// 4
// 5
// 4
// 3
// 2
print('............');
set.add(10).add(11);
print(set) // Set { 2, 3, 4, 5, 6, 7, 8, 10, 11 }
print(set.size) //9
print(set.has(12));//false 是否包含该元素
print(set.has(11));//true
print(set.delete(12));//false
print(set.delete(11));//true 是否成功删除
print(set.clear()); //undefined 清空set,不返回任何值
print(set)//Set {}
print([...new Set([2, 3, 4, 6, 7, 8, 4, 3, 2])])//[ 2, 3, 4, 6, 7, 8 ] set转数组
print(Array.from(new Set([2, 3, 4, 6, 7, 8, 4, 3, 2])))//[ 2, 3, 4, 6, 7, 8 ] set转数组
set = new Set([2, 3, 4, 6, 7, 8, 4, 3, 2]);
for (let obj of set.keys()) {
print('key: ' + obj)
}
//set中键和值相同
// key: 2
// key: 3
// key: 4
// key: 6
// key: 7
// key: 8
for (let obj of set.values()) {
print('value: ' + obj)
}
// value: 2
// value: 3
// value: 4
// value: 6
// value: 7
// value: 8
for (let obj of set.entries()) {
print(obj)
}
// [ 2, 2 ]
// [ 3, 3 ]
// [ 4, 4 ]
// [ 6, 6 ]
// [ 7, 7 ]
// [ 8, 8 ]
set = new Set([4, 5, 6].map((p1, p2, p3) => p1 * 2));
print(set);//Set { 8, 10, 12 }
set = new Set([...new Set([2, 3, 4, 2, 3, 4])].map((p1) => p1 * 2));
print(set);//Set { 4, 6, 8 }
print(new Set([1, 2, 3, 4, 5, 6].filter((p1) => p1 % 2 == 0)))//Set { 2, 4, 6 }
let s1 = new Set([1, 2, 3, 4]);
let s2 = new Set([3, 4, 5, 6]);
print(new Set([...s1, ...s2]))//并集 Set { 1, 2, 3, 4, 5, 6 }
print(new Set([...s1].filter((p1) => s2.has(p1))))//交集 Set { 3, 4 }
print(new Set([...s1].filter((p1) => !s2.has(p1))))//差集 Set { 1, 2 }
new WeakSet().add({})//若引用
// new WeakSet().add("") error
// new WeakSet().add(2) error
print(new WeakSet([[1, 2], [3, 4]]))//WeakSet {}
// print(new WeakSet([1,2])) error
let key = {
name: 'xm',
age: 10
}
let map = new Map();
map.set(key, 'xiaomi 10 years old');
print(map.get(key))//xiaomi 10 years old
print(map.has(key))//true
//数组初始化map
map = new Map([
['name', 'xiaoming'],
['age', 10]
]);
print(map.size)//2
print(map.get('name'))//xiaoming
// Set和Map都可以用来生成新的 Map。
print(new Map(map).get('name'))//xiaoming
let name = new Map(new Set([
['name', 'xiaoming'],
['age', 10]
])).get('name');
print(name)//xiaoming
print(new Map([['name', 'xh']]).get('name'))//xh
print(new Map([['name', 'xl'], ['name2', 'xl']]))//Map { 'name' => 'xl', 'name2' => 'xl' }
// print(new Map({'name': 'xl', 'age': 13})) 不可以使用对象初始化
map = new Map();
map.set(-0, 1);
map.set(+0, 2);
print(map.get(0))//2
print(map.get(-0))//2
print(map.get(+0))//2
map.set(true, 1)
map.set('true', 2)
print(map.get(true))//1
print(map.get('true'))//2
map.set(undefined, 1);
map.set(null, 2)
print(map.get(undefined))//1
print(map.get(null))//2
map.set(NaN, 1)
map.set(NaN, 2)
print(map.get(NaN))//2
map.clear()
map.set('abc', 'ABC').set("def", "DEF")
.set("ghi", "GHI")
map.forEach((p1, p2, p3) => print(p2 + ' ' + p1))
// abc ABC
// def DEF
// ghi GHI
for (let obj of map.keys()) {
print(obj)
}
// abc
// def
// ghi
for (let obj of map.entries()) {
print(obj[0] + '---' + obj[1])
}
// abc---ABC
// def---DEF
// ghi---GHI
for (let [k, v] of map.entries()) {
print(k + '....' + v)
}
// abc....ABC
// def....DEF
// ghi....GHI
for (let [k, v] of map) {
print('of map ' + k + '....' + v)
}
// of map abc....ABC
// of map def....DEF
// of map ghi....GHI
print([...map.keys()])//[ 'abc', 'def', 'ghi' ]
print([...map.values()])//[ 'ABC', 'DEF', 'GHI' ]
print([...map.entries()])//[ [ 'abc', 'ABC' ], [ 'def', 'DEF' ], [ 'ghi', 'GHI' ] ]
print([...map]) //[ [ 'abc', 'ABC' ], [ 'def', 'DEF' ], [ 'ghi', 'GHI' ] ]
//对象转Map
let obj = {
'abc': 'ABC',
'def': 'DEF',
'ghi': 'GHI'
}
map.clear();
for (let k of Object.keys(obj)) {
map.set(k, obj[k])
}
print(map)//Map { 'abc' => 'ABC', 'def' => 'DEF', 'ghi' => 'GHI' }
javascript es6
最新推荐文章于 2022-09-02 01:13:26 发布