SOURCE

    const arr = [0,2,4,6,8,0];


    var ret = arr.map((val,index,arr)=>{
        
        return val*2
    })
console.log(ret)

    var list = []
    arr.forEach(item =>{
        if(list.indexOf(item) === -1){
            list.push(item)
        }
    })
console.log(list)

//遍历
console.log(...list)
// 用法 usage 
// 数组拼接
// const arr1 = ['a', 'b'];
// const arr2 = ['c'];
// const arr3 = ['d', 'e'];
// [...arr1, ...arr2, ...arr3]
// [...arr1, ...arr2,]

    // 或
    arr.push(...list)

    // 数组赋值(深拷贝)
    arr2 = [...arr]

    arr2[0] = 2

console.log(arr)
console.log(arr2)


    // find 找出第一符合判断的并返回 (不会改变原数组)
    var rel = arr.find(function(val,index,arr){
        return val > 5
    })

console.log(rel)
console.log(arr)

// 判断数组arr里有没有4
// includes 与indexof差不多 但是indexof的意在参数值的第一个出现位置 如果
let rel2 = arr.includes(4) 
console.log(rel2)



//ES6 提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值
// 去除数组的重复成员
let rel3 =  [...new Set(arr)]
console.log(rel3)

// Set.prototype.add(value) :添加某个值,返回 Set 结构本身。
// Set.prototype.delete(value) :删除某个值,返回一个布尔值,表示删除是否成功。
// Set.prototype.has(value) :返回一个布尔值,表示该值是否为 Set 的成员。
// Set.prototype.clear() :清除所有成员,没有返回值。

let a = new Set(rel3);
let b = new Set(arr);

// 求并集
let ret4 = [...rel3,...arr]
// 交集
// let ret5 = [...a].filter(x => b.has(x)) 
//差集 


console.log(ret4)
// console.log(ret5)

unique(ret4)

function unique(arr){
    // set 去重
    // return Array.from([...new Set(arr)])

    // includes去重
    var retArr = []
    // includes
    for(let i=0;i<arr.length;i++){
        if(!retArr.includes(arr[i])){
            retArr.push(arr[i])
        }
    }

    console.log(retArr)
}


// promise1 
// 'script start 
// async1 start'
// async2
//  script end'
//  console.log('promise2')
// console.log('async1 end')
//  console.log('setTimeout')



console 命令行工具 X clear

                    
>
console