1.新增数组方法reduce
reduce:将数组中的元素进行整合,返回一个性的内容。reduce方法一共有四个参数。
prev:上一次操作所返回的结果,没有设置默认参数的话,那么数组的第一个元素,作为数组 的第二个元素的prev。
item:当前进入的元素。
index:进入元素的索引值。
array:当前操作的数组
//数组的求和
let arr1=[40,50,70,69,80]
let result1=arr1.reduce((prev,item)=>{
return prev+item
})
console.log(result1)
上面的代码就是利用prev在没有默认参数时,会将数组的第一个元素作为第二个元素的prev。最中实现数组求和。
例1:数组的去重
在处理一些其他操作,比如数组的去重,这时候我们就要用到默认参数。而默认参数的类型,我们要根据返回的值来确定。就用数组的去重为例,他最后要返回的肯定是一个数组,所以默认参数我们可以直接传一个空数组。
let arr1=["百度","腾讯","阿里","京东","百度","腾讯","京东"]
let result1=arr1.reduce((prev,item)=>{
//includes():对数组进行查询是否包含该元素
if(!prev.includes(item)){
prev.push(item)
}
return prev
},[])
console.log(result1)
这里我们设置了默认参数,默认参数为空数组。第一次循环,空数组作为第一个prev,然后判断这个prev里面是否包含“百度”(第一个item元素),如果没有则把该元素追加到prev空数组里,返回的是一个数组,数组里面有一个元素“百度”。然后第一次循环返回的结果(也就是含有百度元素的数组)作为第二个元素的prev,然后进行相同操作。最后把返回值输出。
例2:统计字符的出现次数
首先利用reduce方法对数组进行处理,这里设置默认参数为一个空的对象,方便将统计的次数显示。然后在进行判断条件,如果对象里有当前属性,就把该属性的值加一。如果没有则把该属性加到对象中。
let arr=["a","v","v","a","w","q","w","i","o","e"]
let result1=arr.reduce((prev,item)=>{
if(prev[item]){
prev[item]++
}else{
prev[item]=1
}
return prev
},{})
console.log(result1)
2.新增字符串方法
startswith()判断字符串以什么开头,返回布尔值
endswith()判断字符串以什么结尾,返回布尔值
trim() 去除字符串前后的空格,可以利用在用户输入密码时。有的用户会在输入密码时,会多打一个空格,这时候就需要用到这个方法。增加用户体验
3.新增数据类型
set类型:类数组,里面的元素不能重复。
add():向set容器中添加内容
has():查询容器中是否包含某个值
我们利用set数据类型里面的元素不能重复的特性,我们就可以实现数组的去重以及字符串的去重。
//set类型的创建,利用new来创建,所传入的参数以数组形式传入
let s1=new Set([1,2,3,4,5,5,5])
//对数组进行去重
let arr1=[1,2,3,4,5,5,5]
let s2=new Set(arr1)
arr=Array.from(s2)
console.log(arr)
map类型:可以将任意的元素,作为key。创建的方法和set创建方法一样利用new,但是map要增加属性用set(),访问用get()
//我在html页面中创建了一个按钮。
var bt1=document.getElementById("bt1")
let m=new Map()
m.set(bt1,"按钮")
console.log(m.get(bt1)
symbol类型:创建一个独一无二的值,防止出现属性覆盖问题
let name=Symbol("姓名")
let r=Symbol("姓名")
console.log(r)
console.log(name===r)
这里的name和r虽然属性值一样,但是他们是不相等的。就是因为symbol数据类型所定义的是一个独一无二的值,不可能存在与其相等的值