js数组菜鸟教程,js数组方法总结
本文为大家带来一些javascript中数组常见操作的知识,包括创建数组,判断数组是否,类数组与数组的转换,数组的去重。希望对你有帮助。
推荐:javascript学习教程
创建数组
创建数组是一项基本功,其方法主要有以下几种:
const arr=[1,2,3]
//数组文字常量arr=[,]
//三元素孔数组(孔数组)const arr=new Array(4)
//[,]const arr=新数组(4,2)
//[4,2]常数arr=Array.of(1,2,3)
//[1,2,3]其中,我们一般用数组文字法最多。
判断是不是数组
判断是否为数组的方法主要有:
//数组的方法1 [1,2,3]instance
//方法二[1,2,3]。构造函数===数组
//方法三object . prototype . tostring . call([1,2,3])== [objectarray]
//方法四Array.isArray([1,2,3])
//方法五(兼容写入)函数isArray(arr){
返回Array.isArray?
array . isArray(arr):object . prototype . tostring . call(arr)==[objectarray] }一般来说,最常用的方法应该是isarray方法。
类数组和数组的转换
我们有时候遇到的数据结构并不是纯数组,一般归类为“类数组”。可以通过以下方法将类数组转换为纯数组:
const x=document . query selector all( a );
//方法1 array . prototype . slice . call(x);
//方法2 array . from(x);Array.from(x,mapFn,this arg);
//方法三[.x]
//方法四函数toArray(x){
设res=[]
对于(第x项){
资源推送(项目)
}
return res}
//方法五Array.apply(null,x)
//方法6[]concat . apply([],x)方法5和6本质上利用了apply的特性,即传递给apply的第二个参数(数组或类数组)会被转换成一个参数列表,这些参数会被发送给被调用的方法(new Array或concat)。
数组去重
数组去重,本质上是要比较两个元素是否相等,如果相等就丢弃一个元素。为了判断准确,使用Object.is进行比较。
1)利用 set 去重
集合要求元素不重复,因此可以在将数组转换为集合后删除重复的元素,然后再将其转换回数组。
唯一函数(arr){
返回Array.from(新集合(arr))
//return [.new set (arr)]}:
2)双重循环 + splice
外层循环所有元素,内层循环当前元素之后的所有元素。如果发现相等,使用拼接删除一个。请记住,内圈应该一次返回一个空格,否则会遗漏一些元素。
唯一函数(arr){
for(设I=0;长度;i ){
for(设j=I ^ 1;长度;j ){
if(Object.is(arr[i],arr[j]){
排列拼接(j,1)
j -
}
}
}
Return arr}
3)新建数组 + includes
创建一个新数组,每次将元素添加到数组之前,检查该元素是否已经存在于数组中:
唯一函数(arr){
const res=[]
arr.forEach((item,index)={
//也可以if(res.indexOf(item)==-1),但是不能正确判断NaN。
如果(!资源,包括(项目)){
资源推送(项目)
}
})}
4)reduce + includes
函数唯一(arr){
return arr.reduce((acc,cur)={
//return acc.includes(cur)?acc : acc.concat(cur)
返回acc.includes(cur)?acc : [.acc,cur]
},[])}
5)新建数组 + sort
根据sort的机制(对每个元素调用toStrng,然后在字符串级别排序),让相等的元素聚在一起。创建一个新数组。在向数组中添加元素之前,检查该元素是否等于前一个元素。如果是,则是重复元素:
唯一函数(arr){
arr .排序()
const res=[arr[0]]
for(设I=1;长度;i ){
如果(!Object.is(arr[i],arr[I-1]){
推回(arr[i])
}
}
Return res}
6)新建数组 + 利用对象属性
这个方法其实和“新数组包含”是一样的。创建一个新数组,并在将元素添加到数组之前检查该元素是否已被用作对象的属性:
//对象属性值可以被认为是元素重复的次数function unique(arr){
const res=[]
const obj={}
arr.forEach((item,index)={
如果(!obj[item]){
资源推送(项目)
obj[item]=1
}否则{
对象[项目]
}
})
Return res}这里检测到对象的属性名,属性名本质上是一个字符串,所以会认为obj[true]和obj[true]相等,导致元素true或者元素 true 不放入新数组。
7)利用 map
本质上与上述方法相同,但不需要创建新的数组:
唯一函数(arr){
let map=新地图()
对于(arr项){
如果(!map.has(item)){
map.set(item,true)
}
}
返回[.map.keys ()]}:
8)filter + indexOf
去掉重复的元素。另一种理解方式是保留那些索引等于第一次出现时的索引的元素。这样的元素可以通过filter过滤掉并放入数组中:
唯一函数(arr){
Return arr.filter ((item,index)=index==arr . indexOf(item))}使用index of的缺点是不能正确判断NaN。
推荐:javascript学习教程以上是总结分享JavaScript数组常用操作的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。