一、向后台传递数组参数
1. 安装: npm install qs
2. 使用: let params = qs.stringify({
first: first.value
}, { indices: false })
二、接受后台表格数据,根据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])
console.log(arr1)
console.log(arr2)
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])
*** 方式二:concat方法
let arr1 = [1,2,3]
//连接数组,如果连接的是一个空,那么也是返回了新的本身的数组
let arr2 = arr1.concat()
arr1[0] = 6
console.log(arr2[0])
*** 方式三:map方法
let arr1 = [1,2,3]
//使用map方法遍历数组然后返回新的数组,里面的值不变
let arr2 = arr1.map(item =>{
return item
})
arr1[0] = 6
console.log(arr1[0])
console.log(arr2[0])
*** 方式四:ES6扩展运算符
let arr1 = [1,2,3]
//实现数组的深拷贝
let [...arr2] = arr1
arr1[0] = 6
console.log(arr1[0])
console.log(arr2[0])
四、数组去重的方法
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
obj1[key2[j]] = value2[j]
}
console.log(obj1)
六、两个日期(年月日格式)计算差方法
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)