javascript es6

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' }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值