菜鸟教程:https://www.runoob.com/js/js-tutorial.html
JS
对象操作
- 对象增删改查
- 创建对象 let obj = {}
- 新增属性 obj.a = 1
- 修改属性 obj.a = ‘a’
- 查询属性 obj.a
- 删除属性 delete obj.a
- 其他操作
- obj[a] = 1
- Object.assign() // 深拷贝 ? 浅拷贝
- let { name } = user
- **?. ** b = a?.name a 是 undefined 或者 null b 不报错
- ?? b = a ?? c a 是 undefined 或者 null 则赋值 c 给 b
- || b = a || c a 是 undefined 或者 null 则取 c
- ??= b ??= a 左侧是 undefined 或者 null 则取右侧的值
- 循环对象属性 for key in obj Object.keys(obj)
数组操作
- 数组的增删改查
- 创建数组 let arr = []
- 新增元素
- arr[0] = 1 arr[2] = 3
- push()
- unshift()
- 删除元素
- splice()
- pop()
- shift()
- 修改元素 arr[index] = 1
- 查询元素 arr[index]
- 截取数组 slice()
- 合并数组 concat()
- 字符串变数组 split()
- 数组变字符串 join() 默认使用’,'号分割
- 排序 sort() [有坑] [1,2,10] -> [1,10,2] **.sort((a,b) => a-b) 正序 **
- 倒序 reverse() ** .sort((a,b) => b-a) 倒序**
- 获取元素序号 indexOf() lastIndexOf()
- [神器] filter() 可以筛选和删除元素
- let newArr = users.filter(v => v.name !== ‘李四’ && v.name !== ‘王二’) // 删除数组的指定元素 是不是很舒服
- [神器] find()
- [神器] map() [1,2,3].map(v => v *2) [{name: ‘a’}, {name:b}].map(v => v.name)
- forEach([item], [index])
- reduce
- 语法:arr.reduce(function(prev,cur,index,arr){…}, init);
- prev 累计器累计回调的返回值,表示上一次调用回调时的返回值,或者初始值 init
- cur 表示当前正在处理的数组元素
- index 表示当前正在处理的数组元素的索引
- arr 表示原数组
- init 初始值
- arr = [1,2,3] let sum = arr.reduce((pre, cur) => pre + cur)
let names =['a', 'b', 'c', 'a', 'b']
let res = names.reduce((all, cur) => {
console.log(all, cur)
if (cur in all) {
all[cur]++;
} else {
all[cur] = 1;
}
return all
}, {})
JSON - 数据传输的格式
https://www.json.cn/
- 标准的 JSON
- json 对象 {}
- json 数组 []
- json 数据格式: { “name”: “张三”, “age”: 23, “man”, true, “children”: [ { “name”: “张小宝”, “age”: 20 } ]}