前几天看了看ES6的一些知识,正好今天作项目的时候就用上了Set
的一个特性,如今分享给和我同样的新手。
目的就是点击某个checkbox,实现checkall的效果。
项目使用了vue,因此就不直接操做DOM了,而是直接操做数组。vue
为了不往数组中重复push
数据,利用了Set
不能含有重复元素的特性来去重;固然,重复添加Vue本身也是会处理的,也可使用数组的includes()
方法判断。数组
为了方便的从数组中移除某些元素,使用了Set
对象很方便的delete()
方法。固然,使用数组,也能够对每一个移除项,使用findIndex()
或indexOf()
方法。可是这两个方法都是返回所查找元素第一次出现的位置,而使用Set
的优势是已经自动去重,能够应对含有多个重复元素的状况。
下面就是代码:this
checkallToggle: function(event){ let flag = event.target.checked; let inputs = event.target.parentNode.parentNode.getElementsByClassName('check-case'); if(flag) { for(let input of inputs) { this.checkedFlowNodes = [...new Set(this.checkedFlowNodes).add(input.value)] } } else { for (let input of inputs) { let set = new Set(this.checkedFlowNodes) let value = input.value if(set.has(input.value)) { set.delete(input.value) } this.checkedFlowNodes = [...set] } } },
注意:这个方法仅能用来移除基本类型的数据,由于对象是引用类型,除非能得到这个对象自己,不然没法使用delete()
方法。code