javascript内置对象
Object Array Date Math ...
Set
=> 复杂数据类型
=> 作用
存储无序数据的集合
=> 属性和方法
size
add
delete
clear
=>遍历集合set forEach
=> 特点
集合set中元素不能重复
创建
let set = new Set() //空集合
let set = new Set([1,2,{name:'jack'}, function(){},'hello'])
创建方法类似数组,但不是数组,里面可以存储任意类型的值
size,判断集合内有几个元素
<script>
function test1(){
let set = new Set([10,20])
console.log(set)
console.log('size :',set.size)
}
</script>
add,delete,clear添加与删除与清空
<button class="add">添加</button>
<button class="delete">删除</button>
<script>
const btnAdd = document.querySelector('.add')
const btnDelete = document.querySelector('.delete')
function test1(){
btnAdd.addEventListener('click',function(){
set.add(20)
console.log(set)
})
btnDelete.addEventListener('click',function(){
set.delete(20)
// set.clear()
//清空
console.log(set)
})
}
foreach遍历
function test1(){
let set = new Set([10,20])
set.forEach(function(item){
console.log(item)
})
}
数组去重
indexof或includes
indexof,查找值是否在数组里,不在返回-1
includes,同上,不过返回的是布尔值
indexof
定义一个新数组,存储不重复元素
遍历原数组, 判断新数组中是否存在原数组元素,如果不存,加入新数组
let arr = [1,2,1,2,4]
let newArr = []
arr.forEach((item)=>{
if(newArr.indexOf(item) == -1){
newArr.push(item)
}
})
includes
let arr = [1,2,1,2,4]
let newArr = []
arr.forEach((item)=>{
if(newArr.includes(item) == false){
newArr.push(item)
}
})
console.log(newArr)
双重for循环 + splice
for(let i = 0; i < arr.length; i++){
let item = arr[i]
for(let j = i+1; j<arr.length; j++){
if(item == arr[j]){
arr.splice(j,1)
j--
}
}
}
利用集合特性进行数组去重
数组转集合再转数组
function test3(){
let arr = [10,20,10,30,20]
console.log(arr)
let set = new Set(arr)
arr = [...set]
console.log(arr)
}
test3()
简写
let arr = [10,20,10,30,20]
arr = [...new Set(arr)]
console.log(arr)
集合转数组
原理就是把集合放进数组里面展开
function test2(){
// 集合set转数据Array
let set = new Set([10,20,30])
let arr = [...set]//展开运算符
console.log(arr)
console.log(arr[0])
}
test2()