小学学校网站建设计划,做课件ppt网站,上海到北京火车时刻表查询,wap卖料建站系统#x1f4c3;个人主页#xff1a;「小杨」的csdn博客 #x1f525;系列专栏#xff1a;【JavaScript速成之路】 #x1f433;希望大家多多支持#x1f970;一起进步呀#xff01; 文章目录前言数组对象1#xff0c;数组类型检测2#xff0c;数组元素增删3#xff0c;… 个人主页「小杨」的csdn博客 系列专栏【JavaScript速成之路】 希望大家多多支持一起进步呀 文章目录前言数组对象1数组类型检测2数组元素增删3数组元素筛选4数组元素排序5数组索引6数组元素去重7数组转字符串8其他方法8.1fill()方法8.2spilce()方法8.3slice()方法8.4concat()方法结语前言 前言小杨在上一篇带着大家一起学习了JavaScript内置对象中的Math和Date对象想必大家对JavaScript的这两种对象已经有所了解了那么今天我们将继续带着大家学习一下JavaScript的内置对象中的数组对象这部分相关知识希望大家收获多多 数组对象
JavaScript中的数组对象可以使用new Array或者字面量“[ ]”来创建在创建之后就可以调用数组对象提供的一些方法来实现对数组的操作如添加或删除数组元素数组排序数组索引。
1数组类型检测
在开发中有时需要检测变量的类型是否为数组。例如在函数中要求传入的参数必须是一个数组不能传入其他类型的值否则会报错因此在这个时候可以在函数中检测参数类型是否为数组。
数组类型检测的常见方式有2种分别为使用instanceof运算符和使用Array.isArray()方法。
//数组类型检测法1使用instanceof运算符
参数 instanof Array
//数组类型检测法2使用Array.isArray()方法
Array.isArray(参数)为了更好地理解数组类型的检测方法示例如下
scriptvar arr []; //空数组创建var obj {}; //空对象创建//数组类型检测法1使用instanceof运算符console.log(arr instanceof Array);console.log(obj instanceof Array);//数组类型检测法2使用Array.isArray()方法console.log(Array.isArray(arr));console.log(Array.isArray(obj));
/script示例结果 2数组元素增删
方法名功能描述返回值push(参数1…)数组末尾添加一个或多个元素会修改原数组返回数组的新长度unshift(参数1…)数组开头添加一个或多个元素会修改原数组返回数组的新长度pop()删除数组的最后一个元素若是空数组返回undefined会修改原数组返回删除的元素的值shift()删除数组的第一个元素若是空数组返回undefined会修改原数组返回第一个元素的值为了更好地理解关于数组元素的增删方法示例如下
scriptvar arr [one,two,three,four];console.log(原数组为 arr);//push()方法,数组末尾添加元素返回新数组长度var len1 arr.push(five,six);console.log(新数组为 arr 新数组长度为 len1);//unshift()方法,数组开头添加元素返回新数组长度var len2 arr.unshift(zero);console.log(新数组为 arr 新数组长度为 len2);//pop()方法数组末尾元素删除括号里有无参数输出无影响返回移除的数组元素var lastIndex arr.pop();console.log(新数组为 arr 删除元素为 lastIndex);//shift()方法数组开头元素删除括号里有无参数输出无影响返回移除的数组元素var firstIndex arr.shift();console.log(新数组为 arr 删除元素为 firstIndex);
/script示例结果 3数组元素筛选
script//筛选数组法1未调用方法var arr [18,65,48,32,79,84,94,69];var j 0;var newArr [];for(var i 0; i arr.length; i){if(arr[i] 70){newArr[j] arr[i];}}console.log(newArr);//筛选数组法2:调用push方法var arr [18,65,48,32,79,84,94,69];var newArr [];for(var i 0; i arr.length; i){if(arr[i] 70){newArr.push(arr[i]);}}console.log(newArr);
/script示例结果 4数组元素排序
方法名功能描述reverse()颠倒数组中元素的位置该方法会改变原数组返回新数组sort()对数组的元素进行排序该方法会改变原数组返回新数组
为了更好地理解关于数组元素的排序方法示例如下
script//数组元素排序//reverse()方法颠倒数组元素位置改变原数组返回新数组var arr1 [one,two,three,four];arr1.reverse();console.log(arr1);//sort()方法对数组元素进行排序改变原数组返回新数组var arr2 [14,23,2,8,7,16,9,32,18];arr2.sort();console.log(arr2);
/script示例结果 拓展1如果没有指明 compareFn 那么元素会按照转换为的字符串的诸个字符的 Unicode 位点进行排序。
例如 “Banana” 会被排列到 “cherry” 之前。当数字按由小到大排序时9 出现在 80 之前但因为没有指明 compareFn比较的数字会先被转换为字符串所以在 Unicode 顺序上 “80” 要比 “9” 要靠前。
如果指明了 compareFn 那么数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素
如果 compareFn(a, b) 大于 0b 会被排列到 a 之前。如果 compareFn(a, b) 小于 0那么 a 会被排列到 b 之前如果 compareFn(a, b) 等于 0a 和 b 的相对位置不变。
备注ECMAScript 标准并不保证这一行为而且也不是所有浏览器都会遵守例如 Mozilla 在 2003 年之前的版本
compareFn(a, b) 必须总是对相同的输入返回相同的比较结果否则排序的结果将是不确定的。 所以比较函数格式如下
function compareFn(a, b) {if (在某些排序规则中a 小于 b) {return -1;}if (在这一排序规则下a 大于 b) {return 1;}// a 一定等于 breturn 0;
}比较函数可以用 a 减 b函数将会将数组升序排列若用b减a函数将会对数组降序排列。
script//对数组进行升序排序var arr [14,23,2,8,7,16,9,32,18];arr.sort(function(a,b){ return a - b;});console.log(arr);
/script示例结果 5数组索引
方法名功能描述indexOf()返回在数组中找到给定值的第一个索引如果不存在则返回-1lastIndexOf()返回指定元素在数组中的最后一个的索引如果不存在则返回-1
为了更好地理解关于数组索引的方法示例如下
scriptvar arr [yello,red,blue,red,orange];//indexOf()方法返回指定值在数组里的首个位置的索引从左至右如若数组中无该指定值返回-1console.log(arr.indexOf(pink)); console.log(arr.indexOf(red));//lastIndexOf()方法返回指定值在数组里的首个位置的索引从右至左如若数组中无该指定值返回-1console.log(arr.lastIndexOf(pink));console.log(arr.lastIndexOf(red));
/script示例结果 6数组元素去重
script//数组元素去重处理原理用旧数组元素去查询新数组不存在就往新数组里添加数组元素存在就跳过function unique(arr){ var newArr [];for(var i 0; i arr.length; i){if(newArr.indexOf(arr[i]) -1){newArr.push(arr[i]);}}return newArr;}var arr [12,22,23,24,42,22,24];console.log(unique(arr));
/script示例结果 7数组转字符串
方法功能描述toString()把数组转换为字符串逗号分隔每一项join(‘分隔符’)将数组的所有元素连接到一个字符串中
为了更好地理解关于数组转字符串的方法示例如下
scriptvar arr [undefined,a,b,c,d,e,null];//使用toString()将数组转换为字符串console.log(arr.toString()); //使用join()将数组转换为字符串console.log(arr.join());console.log(arr.join( ));console.log(arr.join(-));
/script示例结果 8其他方法
方法名功能描述fill()用一个固定值填充到数组中指定下标范围内的全部元素splice()数组删除参数为splice(第几个开始要删除的个数)返回被删除项目的新数组slice()数组截取参数为slice(begin,end)返回被截取项目的新数组concat()连接两个或者多个数组不影响原数组返回一个新数组
8.1fill()方法
fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
fill() 方法语法
fill(value) //省略start和end填充范围为[0,arr1.length-1]
fill(value, start) //省略end,填充范围为[start,arr1.length-1]
fill(value, start, end) //填充范围为[start,end-1]value用来填充数组元素的值。起始索引默认值为 0。终止索引默认值为 arr.length。
script//fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。var arr1 [one,two,three,four,five];console.log(arr1.fill(zero));//省略start和end填充范围为[0,arr1.length-1]var arr1 [one,two,three,four,five];console.log(arr1.fill(zero,2));//省略end,填充范围为[start,arr1.length-1]var arr1 [one,two,three,four,five];console.log(arr1.fill(zero,3,5));//填充范围为[start,end-1]
/script示例结果 8.2spilce()方法
splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组并以数组形式返回被修改的内容。此方法会改变原数组。
语法
splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)返回值由被删除的元素组成的一个数组。如果只删除了一个元素则返回只包含一个元素的数组。如果没有删除元素则返回空数组。
如果添加进数组的元素个数不等于被删除的元素个数数组的长度会发生相应的改变。
script // splice(start) 由start索引开始删除数组元素删除元素个数为arr.length - startvar arr1 [one,two,three,four,five,six];console.log(arr1.splice(1)); //返回由被删除的元素组成的一个数组console.log(arr1); //返回被删除元素后的数组// splice(start, deleteCount) 由start索引开始删除数组元素删除元素个数为deleteCountvar arr2 [one,two,three,four,five,six];console.log(arr2.splice(2,3));console.log(arr2);// splice(start, deleteCount, item1) // 由start索引开始删除数组元素删除元素个数为deleteCount,然后在start位置添加元素item1var arr3 [one,two,three,four,five,six];console.log(arr3.splice(2,3,zero));console.log(arr3);// splice(start, deleteCount, item1, item2, itemN)// 由start索引开始删除数组元素删除元素个数为deleteCount,然后在start位置开始添加元素item1item2....var arr4 [one,two,three,four,five,six];console.log(arr4.splice(2,3,zero,ten));console.log(arr4)
/script示例结果 8.3slice()方法
slice() 方法返回一个新的数组对象这一对象是一个由 begin 和 end 决定的原数组的浅拷贝包括 begin不包括end。原始数组不会被改变。
slice()
slice(start)
slice(start, end)slice 不会修改原数组只会返回一个浅复制了原数组中的元素的一个新数组。原数组的元素会按照下述规则拷贝
如果该元素是个对象引用不是实际的对象slice 会拷贝这个对象引用到新的数组里。两个对象引用都引用了同一个对象。如果被引用的对象发生改变则新的和原来的数组中的这个元素也会发生改变。对于字符串、数字及布尔值来说不是 String、Number 或者 Boolean 对象slice 会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值将不会影响另一个数组。
如果向两个数组任一中添加了新元素则另一个不会受到影响。
script//slice() 数组截取返回被截取元素的新数组对原数组无影响var arr [1,2,3,4,5];console.log(arr.slice()); //无参数默认截取数组截取范围[0,len-1]console.log(arr.slice(1)); //有参数start从start开始截取数组截取范围[start,len-1]console.log(arr.slice(1,2)); //有参数start和end从start开始截取数组截取范围[start,end-1]console.log(arr); //查看slice()方法对原数组的影响
/script示例结果 8.4concat()方法
concat()方法连接多个数组返回新数组对原数组无影响
script//concat()方法连接多个数组返回新数组对原数组无影响//连接合并2个数组var arr1 [1,2,3];var arr2 [6,7,8];console.log(arr1.concat(arr2));//连接合并3个数组var arr1 [3];var arr2 [4,5];var arr3 [6,7,8];console.log(arr1.concat(arr2,arr3));
/script示例结果 结语
这就是本期博客的全部内容啦想必大家已经对JavaScript内置对象中的数组对象相关内容有了全新地认识和理解吧如果有什么其他的问题无法自己解决可以在评论区留言哦
最后如果你觉得这篇文章写的还不错的话或者有所收获的话麻烦小伙伴们动动你们的小手给个三连呗点赞评论✍收藏多多支持一下各位的支持是我最大的动力后期不断更新优质的内容来帮助大家一起进步。那我们下期见 文章转载自: http://www.morning.bsxws.cn.gov.cn.bsxws.cn http://www.morning.xltdh.cn.gov.cn.xltdh.cn http://www.morning.yqlrq.cn.gov.cn.yqlrq.cn http://www.morning.qnhpq.cn.gov.cn.qnhpq.cn http://www.morning.llgpk.cn.gov.cn.llgpk.cn http://www.morning.pmptm.cn.gov.cn.pmptm.cn http://www.morning.rmyqj.cn.gov.cn.rmyqj.cn http://www.morning.kxbdm.cn.gov.cn.kxbdm.cn http://www.morning.dspqc.cn.gov.cn.dspqc.cn http://www.morning.mpyry.cn.gov.cn.mpyry.cn http://www.morning.sftrt.cn.gov.cn.sftrt.cn http://www.morning.qzpkr.cn.gov.cn.qzpkr.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.wjxyg.cn.gov.cn.wjxyg.cn http://www.morning.nzkc.cn.gov.cn.nzkc.cn http://www.morning.pbmg.cn.gov.cn.pbmg.cn http://www.morning.yxnfd.cn.gov.cn.yxnfd.cn http://www.morning.qieistand.com.gov.cn.qieistand.com http://www.morning.txjrc.cn.gov.cn.txjrc.cn http://www.morning.bcngs.cn.gov.cn.bcngs.cn http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn http://www.morning.cklld.cn.gov.cn.cklld.cn http://www.morning.cpfbg.cn.gov.cn.cpfbg.cn http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn http://www.morning.xsklp.cn.gov.cn.xsklp.cn http://www.morning.sskns.cn.gov.cn.sskns.cn http://www.morning.mfnjk.cn.gov.cn.mfnjk.cn http://www.morning.gcfrt.cn.gov.cn.gcfrt.cn http://www.morning.ypcbm.cn.gov.cn.ypcbm.cn http://www.morning.ksgjn.cn.gov.cn.ksgjn.cn http://www.morning.fchkc.cn.gov.cn.fchkc.cn http://www.morning.bxgpy.cn.gov.cn.bxgpy.cn http://www.morning.wfjyn.cn.gov.cn.wfjyn.cn http://www.morning.htsrm.cn.gov.cn.htsrm.cn http://www.morning.qrqdr.cn.gov.cn.qrqdr.cn http://www.morning.ptzbg.cn.gov.cn.ptzbg.cn http://www.morning.wkmrl.cn.gov.cn.wkmrl.cn http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn http://www.morning.fxzw.cn.gov.cn.fxzw.cn http://www.morning.qhln.cn.gov.cn.qhln.cn http://www.morning.fnpyk.cn.gov.cn.fnpyk.cn http://www.morning.nzmhk.cn.gov.cn.nzmhk.cn http://www.morning.wbfly.cn.gov.cn.wbfly.cn http://www.morning.zkqjz.cn.gov.cn.zkqjz.cn http://www.morning.monstercide.com.gov.cn.monstercide.com http://www.morning.gjqnn.cn.gov.cn.gjqnn.cn http://www.morning.wxqmc.cn.gov.cn.wxqmc.cn http://www.morning.skqfx.cn.gov.cn.skqfx.cn http://www.morning.nlrp.cn.gov.cn.nlrp.cn http://www.morning.yrmpr.cn.gov.cn.yrmpr.cn http://www.morning.rfmzc.cn.gov.cn.rfmzc.cn http://www.morning.rkfh.cn.gov.cn.rkfh.cn http://www.morning.tnwgc.cn.gov.cn.tnwgc.cn http://www.morning.nlysd.cn.gov.cn.nlysd.cn http://www.morning.qnqt.cn.gov.cn.qnqt.cn http://www.morning.wnxqf.cn.gov.cn.wnxqf.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn http://www.morning.klyyd.cn.gov.cn.klyyd.cn http://www.morning.dkqr.cn.gov.cn.dkqr.cn http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn http://www.morning.jlgjn.cn.gov.cn.jlgjn.cn http://www.morning.mpflb.cn.gov.cn.mpflb.cn http://www.morning.gwsll.cn.gov.cn.gwsll.cn http://www.morning.pwqyd.cn.gov.cn.pwqyd.cn http://www.morning.leboju.com.gov.cn.leboju.com http://www.morning.tsycr.cn.gov.cn.tsycr.cn http://www.morning.gfqj.cn.gov.cn.gfqj.cn http://www.morning.kjsft.cn.gov.cn.kjsft.cn http://www.morning.bcdqf.cn.gov.cn.bcdqf.cn http://www.morning.tkkjl.cn.gov.cn.tkkjl.cn http://www.morning.jtcq.cn.gov.cn.jtcq.cn http://www.morning.dyxlj.cn.gov.cn.dyxlj.cn http://www.morning.rttp.cn.gov.cn.rttp.cn http://www.morning.fnlnp.cn.gov.cn.fnlnp.cn http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn http://www.morning.zsfooo.com.gov.cn.zsfooo.com http://www.morning.dmcqy.cn.gov.cn.dmcqy.cn http://www.morning.rdzlh.cn.gov.cn.rdzlh.cn