学习汇总2
1.数组的操作方法
1扁平化
多层数组变一层 flat
reduce方法//数组去重
var arr = [1, 2, 3, 4, 5];
sum = arr.reduce(function(prev, cur, index, arr) {
console.log(prevres, cur, index);
return prevres + cur;
},0)
如果没有初始值prev是数组第一项,cur是第二项
如果有初始值0prev是0cur是第一项
console.log(arr, sum);
[1,2,3,4,5] 15
参数
prev: 第一项的值或上一次叠加的结果值
cur: 当前会参与叠加的项
index: 当前值的索引
arr: 数组本身
2.bfc 块级格式化上下文
父元素没有高度,子元素有高度浮动的情况下没有形成bfc
bfc创建方法,好处可以取消maigin塌陷,阻止被浮动覆盖
1.父元素一起浮动
2.父元素为绝对定位和固定定位
3.父元素display为inline-block flex
4.父元素overflow:hidden/最好
3.call apply bind
改变this指向
常用例子:
(1)
function eat(x,y){
console.log(x+y);
}
function drink(x,y){
console.log(x-y);
}
eat.call(drink,3,2);
输出:5
这个例子中的意思就是用 eat 来替换 drink,eat.call(drink,3,2) == eat(3,2) ,所以运行结果为:console.log(5);
注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。
(2)
function Animal(){
this.name="animal";
this.showName=function(){
console.log(this.name);
}
}
function Dog(){
this.name="dog";
}
var animal=new Animal();
var dog=new Dog();
animal.showName.call(dog);
输出:dog
在上面的代码中,我们可以看到Dog里并没有showName方法,那为什么(this.name)的值是dog呢?
关键就在于最后一段代码(animal.showName.call(dog)),意思是把animal的方法放到dog上执行,也可以说,把animal 的showName()方法放到 dog上来执行,所以this.name 应该是 dog。
类数组转化为数组:Array.prototype.slice.call(), [...argument]
4.es6 array.some array.every
查询数组中某个对象的值是不是某个
var data= array.every(f=>f.color==red)