//filter函数
let aaa = [2,3,4,9];
console.log(aaa.filter(function(n){
return n < 3
}))
console.log(aaa.filter(n => n < 3))
//map函数
console.log(aaa.map(function(n){
return n*2;
}))
console.log(aaa.map(n=>n*2))
//reduce对数组中所有的内容进行汇总
console.log(aaa.reduce(function(prevalue,n){
return prevalue + n
},0))
三种for循环
let pr = 0;
for(let i = 0; i < this.newList.length;i++){
pr += this.newList[i].price * this.newList[i].num
}
//数组里面的值比如[2,3,4],i为0,1,2
for(let i in this.newList){
pr += this.newList[i].price * this.newList[i].num
}
//数组里的对象比如[{2,3,4},{23,21,1}],i为{2,3,4},{23,21,1}
for(let i of this.newList){
pr += i.price + i.num
}
数组对象去重
let object = [
{
id:1,
name:'小红'
},
{
id:2,
name:'小兰'
},
{
id:2,
name:'小兰'
},
{
id:2,
name:'小兰'
},
{
id:3,
name:'小紫'
},
{
id:2,
name:'小兰'
},
{
id:3,
name:'小紫'
},
{
id:3,
name:'小紫'
},
{
id:2,
name:'小兰'
},
]
// 第一种
let newObject = {};
console.log(
object.reduce((prev,next)=>{
newObject[next.id] ? '' : newObject[next.id] = true && prev.push(next)
return prev
},[])
)
// 第二种
let newObjectList = [];
let flage;
for(let i = 0; i < object.length + 1; i++){
if(flage){
i = i - 1;
}
if(newObjectList.includes(object[i].id)){
object.splice(i,1)
flage = true;
}else{
newObjectList.push(object[i].id)
flage = false;
}
}
console.log(object)
// 第三种
let newObjectList = [];
let newList = [];
for(let item of object){
if(newObjectList.indexOf(item.id) == -1){
newObjectList.push(item.id)
newList.push(item)
}
}
// 取最大值
// 第一种取最大值的对象
let dd = object.reduce((prev,next)=>{
return prev.age > next.age ? prev : next
})
console.log(dd)
// 第二种(直接取出最大值)
let dd = Math.max.apply(Math,object.map((item)=>{
return item.age
})
排序
//sort内置方法进行排序
newArr.sort((a,b)=>{
return a.sort - b.sort
})
常规冒泡排序
for(let i = 0; i < newArr.length - 1; i++){
for(let j = 0; j < newArr.length - 1 - i; j++){
if(newArr[j].sort < newArr[j+1].sort){
let temp = arr[j].sort
newArr[j].sort = newArr[j+1].sort
newArr[j+1].sort = temp;
}
}
}
事件的订阅发布,删除
class observe{
data = {}
pushMeth(name,fn){
this.data[name] = this.data[name] || []
this.data[name].push(fn)
}
emit(name,parmeter){
if(this.data[name]){
this.data[name].forEach((v)=>{
v(parmeter);
})
}
}
delMet(name,fun){
if(this.data[name]){
let newObj;
newObj = fun ? this.data[name].filter((v)=>v != fun) : [];
this.data[name] = newObj;
}
}
}
f1 = ((v)=>console.log(`f1${v}`))
f2 = ((v)=>console.log(`f2${v}`))
f3 = ((v)=>console.log(`f3${v}`))
let object = new observe();
object.pushMeth('dd',f1)
object.pushMeth('dd',f2)
object.pushMeth('dd',f3)
object.emit('dd','hhh')
object.delMet('dd',f2)
object.emit('dd','hhh')