前言数组是JavaScript中常见数据类型之一,关于它的一些操作方法,我在这里做一下简单记录和总结。

本文主要包括:创建数组判断是不是数组类数组和数组的转换数组去重各位看官可根据自身需求选择食用。

创建数组创建数组是基本功,其方法主要包括以下几种:constarr=[1,2,3]//数组字面量constarr=[,,,]//三元素空位数组(holearray)constarr=newArray(4)//[,,,,]constarr=newArray(4,2)//[4,2]constarr=Array.of(1,2,3)//[1,2,3]其中,我们一般最常用的是数组字面量法。

判断是不是数组判断是不是数组的方法主要有://方法一[1,2,3]instanceofArray//方法二[1,2,3].constructor===Array//方法三Object.prototype.toString.call([1,2,3])==='[objectArray]'//方法四Array.isArray([1,2,3])//方法五(兼容写法)functionisArray(arr){returnArray.isArray?Array.isArray(arr):Object.prototype.toString.call(arr)==='[objectArray]'}一般最常用的应该是isArray方法。

类数组和数组的转换我们有时碰到的数据结构不是纯数组,一般将其归类为“类数组”,类数组可以借助以下方法转为纯数组:constx=document.querySelectorAll('a');//方法一Array.prototype.slice.call(x);//方法二Array.from(x);Array.from(x,mapFn,thisArg);//方法三[...x]//方法四functiontoArray(x){letres=[]for(itemofx){res.push(item)}returnres}//方法五Array.apply(null,x)//方法六[].concat.apply([],x)方法五和六本质上都是利用了apply的特点,即传给apply的第二个参数(数组或者类数组)会被转换为一个参数列表,这些参数再送到调用的方法(newArray或者concat)中。

数组去重数组去重,本质上都需要比较两个元素是否相等,如果相等,则抛弃一个元素。

为了准确地判断,这里统一使用Object.is进行比较。

1)利用set去重set要求元素不重复,因此将数组转换为set之后就可以去重了,接着再转换回数组即可。

functionunique(arr){returnArray.from(newSet(arr))//return[...newSet(arr)]}2)双重循环+splice外层循环遍历所有元素,里层循环遍历当前元素往后的所有元素,若发现相等则利用splice移除掉一个。

记得里层循环每次要回退一格,否则会遗漏掉某些元素functionunique(arr){for(leti=0;i3)新建数组+includes新建数组,每次往数组中添加元素之前都检查数组中是否已有该元素:functionunique(arr){constres=[]arr.forEach((item,index)=>{//也可以if(res.indexOf(item)==-1),但是无法正确判断NaNif(!res,includes(item)){res.push(item)}})}4)reduce+includesfunctionunique(arr){returnarr.reduce((acc,cur)=>{//returnacc.includes(cur)?acc:acc.concat(cur)returnacc.includes(cur)?acc:[...acc,cur]},[])}5)新建数组+sort根据sort的机制(在每个元素上调用toStrng,之后在字符串层面进行排序),让相等的元素聚集在一起。

新建数组,每次往数组中添加元素之前都检查该元素是否等于前面的元素,是则属于重复元素:functionunique(arr){arr.sort()constres=[arr[0]]for(leti=1;i6)新建数组+利用对象属性这种方法其实和“新建数组+includes”一样。

新建数组,每次往数组中添加元素之前都检查该元素是否已经作为对象的属性://对象属性值可以认为是元素重复的次数functionunique(arr){constres=[]constobj={}arr.forEach((item,index)=>{if(!obj[item]){res.push(item)obj[item]=1}else{obj[item]++}})returnres}这里检测的是对象的属性名,而属性名本质上是一个字符串,因此会认为obj[true]和obj[true]是相等的,从而导致元素true或者元素true未能放入新数组中7)利用map本质上和上面的方法是一样的,但是不需要新建数组:functionunique(arr){letmap=newMap()for(itemofarr){if(!map.has(item)){map.set(item,true)}}return[...map.keys()]}8)filter+indexOf去掉重复的元素,换个角度来理解就是保留那些索引等于第一次出现时的索引的元素,这样的元素可以用filter筛选出来,放到一个数组中:functionunique(arr){returnarr.filter((item,index)=>index===arr.indexOf(item))}使用indexOf的缺点是无法正确判断NaN。

总结以上就是与数组有关的一些基本操作方法总结。

~~本文完,感谢阅读!~学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!大家好,我是〖编程三昧〗的作者隐逸王,我的公众号是『编程三昧』,欢迎关注,希望大家多多指教!

  • 记载
禹洲嘉誉山 2023-03-30 01:03:23

前言数组是JavaScript中常见数据类型之一,关于它的一些操作方法,我在这里做一下简单记录和总结。

本文主要包括:创建数组判断是不是数组类数组和数组的转换数组去重各位看官可根据自身需求选择食用。

创建数组创建数组是基本功,其方法主要包括以下几种:constarr=[1,2,3]//数组字面量constarr=[,,,]//三元素空位数组(holearray)constarr=newArray(4)//[,,,,]constarr=newArray(4,2)//[4,2]constarr=Array.of(1,2,3)//[1,2,3]其中,我们一般最常用的是数组字面量法。

判断是不是数组判断是不是数组的方法主要有://方法一[1,2,3]instanceofArray//方法二[1,2,3].constructor===Array//方法三Object.prototype.toString.call([1,2,3])==='[objectArray]'//方法四Array.isArray([1,2,3])//方法五(兼容写法)functionisArray(arr){returnArray.isArray?Array.isArray(arr):Object.prototype.toString.call(arr)==='[objectArray]'}一般最常用的应该是isArray方法。

类数组和数组的转换我们有时碰到的数据结构不是纯数组,一般将其归类为“类数组”,类数组可以借助以下方法转为纯数组:constx=document.querySelectorAll('a');//方法一Array.prototype.slice.call(x);//方法二Array.from(x);Array.from(x,mapFn,thisArg);//方法三[...x]//方法四functiontoArray(x){letres=[]for(itemofx){res.push(item)}returnres}//方法五Array.apply(null,x)//方法六[].concat.apply([],x)方法五和六本质上都是利用了apply的特点,即传给apply的第二个参数(数组或者类数组)会被转换为一个参数列表,这些参数再送到调用的方法(newArray或者concat)中。

数组去重数组去重,本质上都需要比较两个元素是否相等,如果相等,则抛弃一个元素。

为了准确地判断,这里统一使用Object.is进行比较。

1)利用set去重set要求元素不重复,因此将数组转换为set之后就可以去重了,接着再转换回数组即可。

functionunique(arr){returnArray.from(newSet(arr))//return[...newSet(arr)]}2)双重循环+splice外层循环遍历所有元素,里层循环遍历当前元素往后的所有元素,若发现相等则利用splice移除掉一个。

记得里层循环每次要回退一格,否则会遗漏掉某些元素functionunique(arr){for(leti=0;i3)新建数组+includes新建数组,每次往数组中添加元素之前都检查数组中是否已有该元素:functionunique(arr){constres=[]arr.forEach((item,index)=>{//也可以if(res.indexOf(item)==-1),但是无法正确判断NaNif(!res,includes(item)){res.push(item)}})}4)reduce+includesfunctionunique(arr){returnarr.reduce((acc,cur)=>{//returnacc.includes(cur)?acc:acc.concat(cur)returnacc.includes(cur)?acc:[...acc,cur]},[])}5)新建数组+sort根据sort的机制(在每个元素上调用toStrng,之后在字符串层面进行排序),让相等的元素聚集在一起。

新建数组,每次往数组中添加元素之前都检查该元素是否等于前面的元素,是则属于重复元素:functionunique(arr){arr.sort()constres=[arr[0]]for(leti=1;i6)新建数组+利用对象属性这种方法其实和“新建数组+includes”一样。

新建数组,每次往数组中添加元素之前都检查该元素是否已经作为对象的属性://对象属性值可以认为是元素重复的次数functionunique(arr){constres=[]constobj={}arr.forEach((item,index)=>{if(!obj[item]){res.push(item)obj[item]=1}else{obj[item]++}})returnres}这里检测的是对象的属性名,而属性名本质上是一个字符串,因此会认为obj[true]和obj[true]是相等的,从而导致元素true或者元素true未能放入新数组中7)利用map本质上和上面的方法是一样的,但是不需要新建数组:functionunique(arr){letmap=newMap()for(itemofarr){if(!map.has(item)){map.set(item,true)}}return[...map.keys()]}8)filter+indexOf去掉重复的元素,换个角度来理解就是保留那些索引等于第一次出现时的索引的元素,这样的元素可以用filter筛选出来,放到一个数组中:functionunique(arr){returnarr.filter((item,index)=>index===arr.indexOf(item))}使用indexOf的缺点是无法正确判断NaN。

总结以上就是与数组有关的一些基本操作方法总结。

~~本文完,感谢阅读!~学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!大家好,我是〖编程三昧〗的作者隐逸王,我的公众号是『编程三昧』,欢迎关注,希望大家多多指教!

目录

  1. 1 Flash游戏澳门赌博时代没有闪光
  2. 2 夜蝶直播
  3. 3 1xbet旁路双您的游戏排名
  4. 在线赌场优惠券Double -Up赌场优惠券
  5. 邵占维的后台是谁
  6. 4 即墨新空间温泉
  7. 澳门赌场如何赌场muktu
  8. 穿越重生宇极主源
  9. 5 怎样让老婆承认有外遇
  10. 6 功绩赌场优惠券RULET游戏制作
  11. 厕所一视频@herehard
  1. 计算机考研非408学校
  2. 高潮时流的水是什么
  3. 7 互联网赌场社区Kao Life Baccarat
  4. sci文章发表分几区
  5. 澳门老虎机规则巴卡拉特游戏方法
  6. 赌场突袭类型插槽网站小米
  7. 美国在线赌场gangwon土地二十一点机会
  8. 杏耀测速地址
  9. 8 博彩网站排名最好的甘旺陆地老虎机建议
  10. 香港巡航博彩计算器中国
  11. 草莓视频官网下载器
  12. 狐妖小红娘h文
  13. Netmarble Baccarat向我展示篮球现场押注
  1. Yong Casino加入优惠券砂赌场代码
  2. 蜜汁甜妻傲娇帝
  3. 纪云珍珍妮妮全文
  4. 二十一点免费游戏巴卡拉特系统投注向我展示下注
  5. 9 巴卡拉特鞠躬的地方赌场30,000优惠券
  6. 4投注WOORI赌场40 Pro Distributors招聘
  7. 老婆大人官网加盟费
  8. 性美腿女神五毒1――8
  9. 10 赌场网站shomi贝丝在线推荐
  10. 丝袜中文字幕
  11. 足球广播海外网站Uni 88澳门老虎机大奖
  12. 冲田杏梨的磁力合集
  13. 百度云资源实时分享群组
  1. 天龙八部烹饪食谱在哪买
  2. 11 cctv陈慧33秒视频资源
  3. bt蚂蚁磁力种子链接
  4. 见鬼女主播免费阅读
  5. 炉石海外网站Uni 88老虎机游戏机会
  6. 日本电影老师
  7. 宙斯赌场加入优惠券kangwon陆地老虎机概率披露
  8. 12 金智妮现场扣
  9. 13 Jeongseok Ras Vegas老虎机游戏的系统下注
  10. 14 九九热线有精品视频6app
    <bdo id="PuYHSgzB6Vh"></bdo>

    禹洲嘉誉山《禹洲嘉誉山》由来

    编辑
    1.禹洲嘉誉山虽然夏天之前卖了很多的丹药,但是说白了,他的那些丹药种类...
           2.或许是如愿以偿过后的沈醉容过于激动,满眼里只有前方的草地,和骏马驰骋下带给自己精神上的享受,她并没有注意到此时傅郁之的举动有什么不妥。
           3.”胡总指挥冷冷的说道,他早就看夏天不爽了,刚才在外面的时候,他的人金鳌就已经被打的非常严重了,当时他就恨不得上去干掉夏天,可是被左护法打断了。
           4.她曾经无数次的幻想过自己的初吻会是什么样的,但是就是没有想过会这样丢了。
           5.虽然银光环的速度很快,但是银光环需要换位,零一秒,虽然这零点一秒战斗的时候可以轻松的躲过去,但是他在火焰之中怎么躲?这可是青色的火焰啊,等级比白色的火焰还要恐怖,如果夏天稍有不慎,那就会被立刻焚烧。

    禹洲嘉誉山《禹洲嘉誉山》起源

            <acronym date-time="H2mfCd96NMI"></acronym>
            1.禹洲嘉誉山玩法丰富,关卡多样,你会碰见很多不同的病人,治疗他们的方法也不相同
                   2.进攻非常精彩,可以释放各种大招,在不同的比赛中展现你的真实实力和技巧。
                   3.组队完成游戏中的任务,提高效率,并花时间在提高战斗能力上有无限的可能性。
                   4.解锁难度更高的游戏关卡,测试玩家的眼速和手速游戏,开始一起冒险;
                   5.自由挑战强大的boss,丰富的副本boss等你来挑战,助你成为一个绝世强者。
                   6.卡通的画面风格,大量的场景画面,体验惊喜与趣味,沉浸游戏当中。
            参考资料