JavaScript数组方法使用与数组常用处理

目录

一.数组方法

pop()删除

push()添加

shift()删除

unshitf()添加

splice()拼接

slice()复制

concat()合并

sort()排序

reverse()反转

forEach()循环

map()循环

filter()过滤

reduce()total

every()验证

some()验证

indexOf()检索

find()检索

findIndex()检索

二.数组常用处理

1.数组中纯数字的排序

2.数组中纯数字的最大最小值

3.数组中对象的排序

代码直接粘贴就可以运行,效果可以更直观的了解方法对数组的处理


一.数组方法

pop()删除

方法从数组中删除最后一个元素并返回删除的值

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayPop"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      let testArrayPop = testArray.pop();
      document.getElementById("testArray").innerHTML="pop后原数组:"+testArray;
      document.getElementById("testArrayPop").innerHTML="pop返回值:"+testArrayPop;
    }
<script/>

delete运算符,数组属于对象,其中的元素就可以使用delete运算符删除,但是delete是将元素值改为undefined,这会在数组留下未定义的空洞,不建议使用

//html
<body>
 <button @click="test">test</button>
 <div id="testArrayPop"></div>
 <div id="testArrayDelete"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      testArray.pop();
      document.getElementById("testArrayPop").innerHTML="pop后原数组:"+testArray;
      testArray = ["o", "1", "2", "3"];
      delete testArray[testArray.length-1];
      document.getElementById("testArrayDelete").innerHTML="delete数组最后一个元素后的原数组:"+testArray;
    }
</script>

push()添加

方法向数组结尾后添加新的元素并返回新数组的长度

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayPush"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      let testArrayPush=testArray.push("test","test1");
      document.getElementById("testArray").innerHTML="push后原数组:"+testArray;
      document.getElementById("testArrayPush").innerHTML="push返回值:"+testArrayPush;
    }
<script/>

shift()删除

方法会删除首个数组元素并返回被删除的字符串

//html
<body>
 <button @click="test">test</button>
 <div id="testArray"></div>
 <div id="testArrayShift"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      let testArrayShift=testArray.shift();
      document.getElementById("testArray").innerHTML="shift后原数组:"+testArray;
      document.getElementById("testArrayShift").innerHTML="shift返回值:"+testArrayShift;
    }
<script/>

unshitf()添加

方法向数组开头前添加新元素并返回新数组的长度

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayUnshift"></div>
</body>

//js
<script>
function test(){
      let t=[1,2,3]
      let testArray = ["o", "1", "2", "3"];
      let testArrayUnshift=testArray.unshift(t);
      document.getElementById("testArray").innerHTML="unshift后原数组:"+testArray;
      document.getElementById("testArrayUnshift").innerHTML="unshift返回值:"+testArrayUnshift;
    }
<script/>

splice()拼接

splice(x,y,z)方法可用于拼接数组并返回包含已删除项的数组,第一个参数x定义了应添加新元素的位置下标,第二个参数y定义应删除多少元素。第三个参数z可选,定义添加的新元素,如果第二个结束参数y被省略,splice会切出数组的剩余部分

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArraySplice"></div>
</body>

//js
<script>
function test(){
      let t=["a","b","c"]
      let testArray = ["o", "1", "2", "3"];
      //从下标2开始,删除2个,并拼接数组t
      let testArraySplice=testArray.splice(2,2,t);
      document.getElementById("testArray").innerHTML="splice后原数组:"+testArray;
      document.getElementById("testArraySplice").innerHTML="splice返回值:"+testArraySplice;
    }
</script>

slice()复制

slice(start,end)复制某个数组片段元素并返回一个新数组,start开始下标,end可选结束参数,省略,则从start开始复制到结尾。

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArraySlice"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      let testArraySlice=testArray.slice(2);
      document.getElementById("testArray").innerHTML="slice后原数组:"+testArraySlice;
      document.getElementById("testArraySlice").innerHTML="slice后数组长度:"+testArraySlice.length;
    }
</script>

concat()合并

方法合并连接现有数组并返回新数组

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayConcat"></div>
</body>

//js
<script>
function test(){
      let t=["a","b","c"];
      let t1=[0]
      let testArray = ["o", "1", "2", "3"];
      let testArrayConcat=testArray.concat(t,t1);
      document.getElementById("testArray").innerHTML="concat后原数组:"+testArrayConcat;
      document.getElementById("testArrayConcat").innerHTML="concat后数组长度:"+testArrayConcat.length;
    }
</script>

sort()排序

方法以字母顺序对数组进行排序,数字按照小到大,注意元素必须为字符串而不是纯数字

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArraySort"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "3", "2"];
      let testArraySort=testArray.sort();
      document.getElementById("testArray").innerHTML="sort后原数组:"+testArray;
      document.getElementById("testArraySort").innerHTML="sort返回值:"+testArraySort;
    }
</script>

reverse()反转

方法反转数组中的元素

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayReverse"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      let testArrayReverse=testArray.reverse();
      document.getElementById("testArray").innerHTML="reverse后原数组:"+testArray;
      document.getElementById("testArrayReverse").innerHTML="reverse返回值:"+testArrayReverse;
    }
</script>

forEach()循环

forEach(value,index,array)方法为每一个存在数组元素调用一次函数,接受三个可选参数value元素值,index元素下标,array数组本身,不会更改原始数组

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayEach"></div>
</body>

//js
<script>
function test(){
      let accept=[];
      let testArray = ["o", "1", "2", "3"];
      //对数组每一个元素执行加1操作,将新值存入accept接收数组
      testArray.forEach((value,index)=>{accept[index]=value+1});
      document.getElementById("testArray").innerHTML="forEach后原数组:"+testArray;
      document.getElementById("testArrayEach").innerHTML="forEach后数组:"+accept;
    }
</script>

map()循环

map(value,index,array)方法对每一个数组元素调用一次函数来创建新数组,不会更改原始数组,map不会对没有值的数组元素执行函数,如null,undefined

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayMap"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      let testArrayMap=testArray.map((value)=>{return  value+1});
      document.getElementById("testArray").innerHTML="map后原数组:"+testArray;
      document.getElementById("testArrayMap").innerHTML="map返回值:"+testArrayMap;
    }
</script>

filter()过滤

filter(value,index,array)方法创建一个包含符合条件的数组元素的新数组并返回

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayFilter"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      let testArrayFilter=testArray.filter((value)=>{return value !== "o"});
      document.getElementById("testArray").innerHTML="filter后原数组:"+testArray;
      document.getElementById("testArrayFilter").innerHTML="filter返回值:"+testArrayFilter;
    }
</script>

reduce()total

reduce(total,value,index,array)方法从左到右在每个数组元素上运行函数,最后返回结果,不会减少原始数组,其中total总和是函数执行的初始值或先前返回的结果,可以在执行之前就定义一个total初始值。与之对应的有一个reduceRight()方法,这个方法和reduce区别从右到左在每个数组元素上运行函数

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayReduce"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      let testArrayReduce=testArray.reduce((total,value)=>{ return total + value;});
      document.getElementById("testArray").innerHTML="reduce后原数组:"+testArray;
      document.getElementById("testArrayReduce").innerHTML="reduce返回值:"+testArrayReduce;
    }
</script>

every()验证

every(value,index,array)方法检查所有数组元素值是否符合条件并返回true或false

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayEvery"></div>
</body>

//js
<script>
function test(){
      let l=Object.prototype.toString;
      let testArray = ["o", "1", "2", "3"];
      //检测每个数组元素是否为字符串
      let testArrayEvery=testArray.every((value)=>{ return l.call(value)===l.call("test")});
      document.getElementById("testArray").innerHTML="every后原数组:"+testArray;
      document.getElementById("testArrayEvery").innerHTML="every返回值:"+testArrayEvery;
    }
</script>

some()验证

some(value,index,array)方法检查存在数组元素值是否符合条件并返回true或false

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArraySome"></div>
</body>

//js
<script>
function test(){
      let l=Object.prototype.toString;
      let testArray = ["o", "1", "2", "3"];
      //检测是否存在数组元素是否为数字
      let testArraySome=testArray.some((value)=>{ return l.call(value)===l.call(0)});
      document.getElementById("testArray").innerHTML="some后原数组:"+testArray;
      document.getElementById("testArraySome").innerHTML="some返回值:"+testArraySome;
    }
</script>

indexOf()检索

indexOf(item,start)方法在数组中搜索元素值并返回其下标,item要检索的元素值,start可选定义从哪里开始到结尾,可以是负值,如果未找到,方法返回 -1,如果有多个,返回第一个下标。lastIndexOf()与之对应,但是检索顺序相反。

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayOf"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "2", "3"];
      let testArrayOf=testArray.indexOf("o");
      document.getElementById("testArray").innerHTML="indexOf后原数组:"+testArray;
      document.getElementById("testArrayOf").innerHTML="indexOf返回值:"+testArrayOf;
    }
</script>

find()检索

find(value,index,array)方法返回符合条件的第一个数组元素的值。

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayFind"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "1", "1", "3"];
      let testArrayFind=testArray.find((value)=>{return value==="1"});
      document.getElementById("testArray").innerHTML="find后原数组:"+testArray;
      document.getElementById("testArrayFind").innerHTML="find返回值:"+testArrayFind;
    }
</script>

findIndex()检索

findIndex(value,index,array)方法返回符合条件的第一个数组元素的索引下标。

//html
<body>
<button @click="test">test</button>
<div id="testArray"></div>
<div id="testArrayFindIndex"></div>
</body>

//js
<script>
function test(){
      let testArray = ["o", "2", "2", "3"];
      let testArrayFindIndex=testArray.findIndex((value)=>{return value==="2"});
      document.getElementById("testArray").innerHTML="findIndex后原数组:"+testArray;
      document.getElementById("testArrayFindIndex").innerHTML="findIndex返回值:"+testArrayFindIndex;
    }
</script>

二.数组常用处理

1.数组中纯数字的排序

我们知道数组中sort方法可以对数组中元素字符串排序,但是sort对纯数字元素是无法排序的,如何用sort来排序纯数字,可以用比较函数来控制排序纯数字元素,当sort()函数比较两个值时,会将值发送到比较函数,并根据所返回的值为负、零或正值对这些值进行排序

//比较函数,a-b为正,顺序为a,b;a-b为负,顺序为b,a,若为零,顺序为a,b
数组名.sort(function(a, b){return a-b})


以随机顺序排序数组
数组名.sort(function(a, b){return 0.5 - Math.random()}); 

2.数组中纯数字的最大最小值

Math.max.apply(null, 数组名);//查询并返回数组中最大值
Math.min.apply(null, 数组名);//查询并返回数组中最小值

3.数组中对象的排序

解决方法是通过比较函数来对比对象的某一个属性值来进项排序

对象名.sort(function(a, b){return a.属性值- b.属性值})

代码直接粘贴就可以运行,效果可以更直观的了解方法对数组的处理

有疑问评论区留言,Finish!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ManiacM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值