项目知识点总结一

156 阅读2分钟
一、向后台传递数组参数
1. 安装: npm install qs
2. 使用: let params = qs.stringify({
            first: first.value
          }, { indices: false }); // 解决post向后台传递数组接受不到参数问题。
          
          
          
二、接受后台表格数据,根据key值动态渲染页面
1. 思路:拿到表格数据的键值对key属性值(表格title)
2. 实现: let arr = [{id: 1,name: 'liu',age: 20},{id: 2,name: 'zhang',age: 30}]
          let tableTitle = []  
          for (const key in arr[0]) {
                tableTitle.push(key)
                tableTitle = Array.from(new Set(tableTitle)) //数组去重
                console.log(tableTitle, '表格title');
           } 
           
           
           
三、数组的浅拷贝和深拷贝
1. javascript分原始类型与引用类型。Array是引用类型,直接用“=”号赋值的话,只是把源数组的地址(或叫指针)赋值给目的数组,指向的是同一个内存地址,其中一个改变另一个也会改变。并没有实现数组的数据的拷贝。这种方式的实现属于浅拷贝。
    let arr1 = [1,2]
    let arr2 = arr1
    //数组是用堆去保存的,相等的时候只是把存放的地址拷贝过去了,两个指向了同一个地址,
    //所以在改变其中一个的值,其他的也跟着改变了
    arr1[0] = 6 
    console.log(arr2[0]); //6
    console.log(arr1); //[6, 2]
    console.log(arr2); //[6, 2]
    
2. 深拷贝是开辟新的储存空间,两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。
    *** 方式一:JSON.stringify和JSON.parse方法
            let arr1 = [1,2,3]
            //先将数组转为字符串,然后转成js对象
            let arr2 = JSON.parse(JSON.stringify(arr1))    
            arr1[0] = 6
            console.log(arr2[0]); //1
            
    *** 方式二:concat方法
            let arr1 = [1,2,3]
            //连接数组,如果连接的是一个空,那么也是返回了新的本身的数组
            let arr2 = arr1.concat();
            arr1[0] = 6
            console.log(arr2[0]); //1
            
    *** 方式三:map方法
            let arr1 = [1,2,3]
            //使用map方法遍历数组然后返回新的数组,里面的值不变
            let arr2 = arr1.map(item =>{
                return item
            })
            arr1[0] = 6
            console.log(arr1[0]); //6
            console.log(arr2[0]); //1
            
    *** 方式四:ES6扩展运算符   
            let arr1 = [1,2,3]
            //实现数组的深拷贝
            let [...arr2] = arr1
            arr1[0] = 6
            console.log(arr1[0]); //6
            console.log(arr2[0]); //1
            
            
            
四、数组去重的方法
    let arr1 = [1,1,1,1,2,2,3,3]
    console.log(Array.from(new Set(arr1)));
    console.log([...new Set(arr1)]);
    
    
    
五、对象里追加键值对
    let arr = [{name: 'liu',age: 24},{name: 'leng',age: 22}]
    let key2 = []
    let value2 = []
    arr.forEach((item) => {
        key2.push(item.name)
        value2.push(item.age)
    })
    const obj1 = {}
    for (var j = 0; j < key2.length; j++) {
        obj1[key2[j]] = value2[j];
    }
    console.log(obj1); //{liu: 24, leng: 22}
    
    
    
六、两个日期(年月日格式)计算差方法
     function datedifference(sDate1, sDate2) { //sDate1和sDate2是2006-12-18格式
            let dateSpan,tempDate,iDays
            sDate1 = Date.parse(sDate1)
            sDate2 = Date.parse(sDate2)
            dateSpan = sDate2 - sDate1
            dateSpan = Math.abs(dateSpan)
            iDays = Math.floor(dateSpan / (24 * 3600 * 1000))
            return iDays
     }
     const a = datedifference('2021-03-01','2021-03-05')
     console.log(a); //4