Array.map()
//返回一个新数组,数组中的元素为原始数组元素调用函数后处理的值
let arr = [1, 2, 3, 4]
arr.map( v=> v*2 ) // [2, 4, 6, 8]
数组的深拷贝
var data1 = [];
var data2 = JSON.parse(JSON.stringify(data1));
改变data1不会影响data2
filter()过滤
[1,2,3,4].filter(a => a>2)
// [3, 4]
Array.forEach()
//遍历数组
let arr = [1, 2, 3, 4]
arr.forEach( v => {
console.log(v) // 1 2 3 4
})
数组的合并去重
...展开运算符和new Set() 展开运算符也能用于对象
let arr1 = [1,2,3,4,2]
let arr2 = [1,23,4, 5]
new Set(arr1) // {1, 2, 3, 4}
[...new Set(arr1)] // [1,2,3,4] 相当于展开放在一个数组中了
//数组的合并去重
[...new Set([...arr1, ...arr2])] //[1, 2, 3, 4, 23, 5]
面试题
// 淘宝首页用了多少种标签 面试题
// querySelectorAll() 返回的是一个nodeList 并不是数组 new Set().size 返回的他的长度
new Set([...document.querySelectorAll('*')].map(v=>v.nodeName)).size
对象的用法
// 对象的遍历
let obj1 = {
name: 'zz',
age: 18
}
Object.keys(obj1).forEach(v => {
console.log(v, obj1[v])
}) // name zz age 18
对象的合并
let obj2 = {
newNmae: 'mdzz'
}
{...obj1, ...obj2, sex: 'male'}
ES6 Class
ES6引入了Class(类)这个概念,作为对象的模板,通过class关键字,可以定义类
class Point() {
constructor(x, y) {
this.x = x
this.y = y
}
toString() {
return this.x + this.y
}
}
var point = new Point(2, 3)
point.toString() //5
先定义了一个Point类,里面还有一个constructor函数,这个就是构造函数,而this关键字则代表实例对象
Class之间可以通过extends关键字实现继承
在类的继承中,子类的构造方法中默认会有super()语句存在,相当于执行父类的相应构造方法中的语句
super可以访问父对象的函数,指代了整个prototype或者__proto__指向的对象
Class ColorPoint extend Point{
constructor(x, y, color){
super(x,y) //等同于super.constructor(x,y) 用在构造函数中,必须在使用this之前调用
this.color = color
}
toString() {
return this.color + '' + super();
}
}
JS数组方法详解
597

被折叠的 条评论
为什么被折叠?



