// Array 数组常用方法 两个注意点
// (1) sort()排序会直接修改原数组
// (2) splice()不会返回修改后的数组,也是直接修改原数组
let arr = [1,2,3]
// 1. Array.prototype.map(v,i) 迭代数组,返回新数组,新数组里面的元素是处理之后的值,经常用于处理数据
console.log(arr.map(v=>v+1)) // [2,3,4]
// 2. Array.prototype.forEach(v,i) 遍历数组, 不返回,用于不改变值,经常用于查找打印值
arr.forEach((v,i)=>console.log(v,i)) // 1 0 \n 2 1 \n 3 2
// 3. Array.prototype.filter() 过滤数组 筛选数组元素,并生成新数组
console.log(arr.filter(v=>v>1)) // [2, 3]
// 4. Array.prototype.reduce((s,i)=>s+i,起始值(不写则默认数组第一个元素))
console.log(arr.reduce((s,i)=>s+i,0)) // 6
// 5. Array.prototype.join("分隔符") 数组转换为字符串
console.log(arr.join("|")) // 1|2|3
// 6. Array.prototype.every() 检测数组中所有元素是否都符合指定条件,返回布尔值,都满足返回true,否则为false
console.log(arr.every(v=>v>2)) // false
// 7. Array.some() 检测数组中的元素是否满足指定条件,有一个满足返回true,没有满足条件的返回false
console.log(arr.some(v=>v>2)) //true
// 8. Array.find() 返回满足条件的第一个元素的值,否则为undefined
console.log(arr.find(v=>v===2)) // 2
console.log(arr.find(v=>v===4)) // undefined
// 9. Array.findIndex() 返回满足条件的第一个元素的索引,没有返回 -1
console.log(arr.findIndex(v=>v===2)) // 1
console.log(arr.findIndex(v=>v===4)) // -1
// 10. Array.concat(arr1) 合并数组
console.log(arr.concat([4,5,6])) //[1, 2, 3, 4, 5, 6]
console.log([...arr,...[4,5,6]]) //[1, 2, 3, 4, 5, 6]
// 11. Array.sort() 数组排序
console.log(arr.sort((a,b)=>a-b)) //[1, 2, 3] 顺序
console.log(arr.sort((a,b)=>b-a)) //[3, 2, 1] 逆序
// 注意sort排序会直接改变原数组!!! 此时arr = [3,2,1]
// 12. Array.reverse() 反转数组
console.log(arr.reverse()) //[1, 2, 3]
// 13. Array.splice(开始位置,个数) 增加或删除数组元素
// let arr13 =["1","2","3"].splice(1,0,"4")//
console.log(arr13) // []
let arr13 = ["1","2","3"]arr13.splice(3,0,"4")
console.log(arr13) //['1', '2', '3', '4']
// 值得注意的是splice()方法不会返回修改后的数组,直接输出为空!!!
console.log(["1","2","3"].splice(1,0,"4")) // []
// 14. Array.slice(包括begin,不包括end) 读取数组元素
console.log(["4","5","6"].slice(1,2)) // ['5']
// 15. Array.toString()
console.log([1,2,3].toString()) // 1,2,3
// 16. Array.push() 追加到最后 pop()删除最后一个
// 17. Array.unshift() 添加到第一个 shift()删除第一个
// 18. Array.indexOf() 没找到指定元素则返回 -1
// 19. Array.fill(value, start, end) 将一个固定值替换数组的元素。
String常用方法
let str = 'This is a string'
console.log(str.length) //16
// 1.split("分隔符")
console.log(str.split(" ")); // ['This', 'is', 'a', 'string']
// 2.startsWith/endsWith() 以指定字符开头或结尾
console.log(str.startsWith("T")) // true
// 3.indexOf("查找元素",起始位置) 查找指定字符返回索引值
console.log(str.indexOf("a",0)) // 8
// 4.substring(开始索引,结束索引(不包含结束位置)) // substring() 注意都是小写字母
console.log(str.substring(5,7)) // is
// 5.toUpperCase() 字母转换为大写
console.log(str.toUpperCase()) // THIS IS A STRING
// 6.toLowercase() 字母转换为小写
console.log(str.toLowerCase()) // this is a string
// 7.includes() 判断是否包含指定字符
console.log(str.includes("a")) // true
// 8.replace() 替换字符串,支持正则匹配
const regex1 = /is/
console.log(str.replace(regex1,"it")) // Thit is a string
// 9.match() 检测匹配的结果并返回,支持正则匹配,没有为空 null
// g 是全部 i 忽略大小写
const regex2 = /[A-C]/gi
const regex3 = /[A-C]/
console.log(str.match(regex2)) // ['a']
console.log(str.match(regex3)) // null
// 10.trim() 清除字符串两端的空格,返回一个新数组
let str10 = ' m m'
console.log(str10.trim()) //m m
Object常用方法
let gender = "男"
let obj = {
name:"张三",
gender,
age: 26,
hobby(){
console.log("篮球")
}
}
// 1.获得所有属性名
console.log(Object.keys(obj)) // ['name', 'gender', 'age', 'hobby']
// 2.获得所有属性值
console.log(Object.values(obj)) // ['张三', '男', 26, ƒ]
// 3.对象拷贝
let OBJ = {}
Object.assign(OBJ,obj)
console.log(OBJ)// 浅拷贝 {name: '张三', gender: '男', age: 26, hobby: ƒ}
// 4.对象合并,常用来给对象添加属性
let newOBJ = Object.assign({price:200},obj)
console.log(newOBJ) //{price: 200, name: '张三', gender: '男', age: 26, hobby: ƒ}
// for in遍历对象
for(let k in obj){
// console.log(k)
// console.log(obj[k])
}
// 5.对象方法 is() ===
console.log(NaN===NaN) // false
console.log(Object.is(NaN,NaN)) // true