新手必看:ES6使用之巧用Set爲數組去重

前幾天看了看ES6的一些知識,正好今天作項目的時候就用上了Set的一個特性,如今分享給和我同樣的新手。
目的就是點擊某個checkbox,實現checkall的效果。
項目使用了vue,因此就不直接操做DOM了,而是直接操做數組。vue

  1. 爲了不往數組中重複push數據,利用了Set不能含有重複元素的特性來去重;固然,重複添加Vue本身也是會處理的,也可使用數組的includes()方法判斷。數組

  2. 爲了方便的從數組中移除某些元素,使用了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

相關文章
相關標籤/搜索