SOURCE

console 命令行工具 X clear

                    
>
console
//console.log("ul对象", document.getElementById("ulId"))
//事件委托
const ulDom = document.getElementById("ulId");

ulDom.addEventListener("click", e => {
    let el = e.target;
    console.log("1/",el.tagName)
    while(!el.matches("li")){
        if(ulDom === el){
            el = null;
            break;
        }
        el = el.parentNode
        console.log("2/",el.tagName)
    }
    el && console.log("模拟function")//如果el不为空,则运行函数
})

//数组去重
var array = [1, 1, '1', '1', null, null, 
    undefined, undefined, 
    new String('1'), new String('1'), 
    {"name":"nmr"},{"name":"nmr"},
    /a/, /a/,
    NaN, NaN
];
// console.log("!!!!!", /a/) 

// 对对象无法去重
// let filterArr1 = array.filter((val, index) => {
//     console.log("!!!!", val, array.indexOf(val), index)
//     return array.indexOf(val) === index
// })
// console.log("filter去重后的数组:", filterArr1) 

// let filterArr2 = Array.from(new Set(array)) //[...new Set(array)] 
// console.log("Set去重后的数组:", filterArr2)

// for (var i = 0; i < array.length; i++) {
//     for (var j = 0; j < array.length; j++) {
//         if (array[i] === array[j] && i != j) { //将后面重复的数删掉
//             array.splice(j, 1);
//         }
//     }
// }
// console.log("双for去重后的数组:", array)

// let filterArr4 = [];
// array.forEach(item => {
//     if(!filterArr4.includes(item)){
//         filterArr4.push(item)
//     }
// })
// console.log("for+includes去重后的数组:", filterArr4)

// let filterArr5 = [];
// const map = new Map();
// array.forEach(item => {
//     if(!map.has(item)){
//         map.set(item, true)
//         filterArr5.push(item)
//     }
// })
// console.log("for+map去重后的数组:", filterArr5)

// let filterArr6 = [];
// const obj = {};
// array.forEach(item => {
//     if(!obj[item]){
//         obj[item] = true
//         filterArr6.push(item)
//     }
// })
// console.log("for+对象去重后的数组:", filterArr6)

// let filterArr7 = [];
// var obj = {};
// filterArr7 = array.filter(function (item, index, array) {
//     return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
// })
// console.log("for+对象去重后的数组:", filterArr7)

let filterArr8 = array.reduce((pre, cur) => pre.includes(cur) ? pre : [...pre, cur], []);
console.log("reduce去重后的数组:", filterArr8)

<ul id="ulId">
    <div>下面的内容是子元素1</div>
    <li>li内容>>> <span> 这是span内容123</span></li>
    下面的内容是子元素2
    <li>li内容>>> <span> 这是span内容123</span></li>
    下面的内容是子元素3
    <li>li内容>>> <span> 这是span内容123</span></li>
</ul>