时间:2021-07-01 10:21:17 帮助过:3人阅读
本篇文章给大家带来的内容是关于js中对数组进行操作的方法总结(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1.找出元素 item 在给定数组 arr 中的位置
- function indexOf(arr, item) {
- if (Array.prototype.indexOf){ //判断原型中是否支持该方法
- return arr.indexOf(item);
- } else {
- for (var i = 0; i < arr.length; i++){
- if (arr[i] === item){
- return i;
- }
- }
- }
- return -1;
- }
2.计算给定数组 arr 中所有元素的总和
- //forEach遍历:
- function sum(arr) {
- var s = 0;
- arr.forEach(function(val, idx, arr) {
- s += val;
- }, 0);
- return s;
- };
- //eval:
- function sum(arr) {
- return eval(arr.join("+"));
- };
3.移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
- //splice()
- function remove(arr,item){
- var newarr = arr.slice(0);
- for(var i=0;i<newarr.length;i++){
- if(newarr[i] == item){
- newarr.splice(i,1);
- i--;
- }
- }
- return newarr;
- }//push()
- function remove(arr,item){
- var newarr = [];
- for(var i=0;i<arr.length;i++){
- if(arr[i] != item){
- newarr.push(arr[i]);
- }
- }
- return newarr;
- }//Array.prototype.filter()
- function remove(arr,item){
- return arr.filter(function(ele){
- return ele != item;
- })
- }
4.移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
- //splice
- function removeWithoutCopy(arr, item) {
- for(var i=0; i<arr.length; i++)
- {
- if(item == arr[i])
- {
- arr.splice(i,1);
- i--;
- }
- }
- return arr;
- }//while
- function removeWithoutCopy(arr, item) {
- for(var i in arr){
- while(arr[i]==item){
- arr.splice(i,1);
- }
- }
- return arr;
- }
5.在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
- //普通的迭代拷贝
- var append = function(arr, item) {
- var length = arr.length,
- newArr = [];
- for (var i = 0; i < length; i++) {
- newArr.push(arr[i]);
- }
- newArr.push(item);
- return newArr;
- };//使用slice浅拷贝+push组合
- function append(arr, item) {
- var newArr=arr.slice(0);
- newArr.push(item);
- return newArr;
- }
6.删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组
- //利用slice
- function truncate(arr) {
- return arr.slice(0,-1);
- }
- //利用filter
- function truncate(arr) {
- return arr.filter(function(v,i,ar) {
- return i!==ar.length-1;
- });
- }
- //利用push.apply+pop
- function truncate(arr) {
- var newArr=[];
- [].push.apply(newArr, arr);
- newArr.pop(); return newArr;
- }
- //利用join+split+pop 注意!!!:数据类型会变成字符型
- function truncate(arr) {
- var newArr = arr.join().split(',');
- newArr.pop();
- return newArr;
- }
7.在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组
- //利用concat
- function prepend(arr, item) {
- return [item].concat(arr);
- }
- //使用push.apply
- function prepend(arr, item) {
- var newArr=[item];
- [].push.apply(newArr, arr);
- return newArr;
- }
- //利用slice+unshift/splice
- function prepend(arr, item) {
- var newArr=arr.slice(0);
- newArr.unshift(item);//newArr.splice(0,0,item);
- return newArr;
- }
8.删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组
- //利用slice
- function curtail(arr) {
- return arr.slice(1);
- }
- //利用filter
- function curtail(arr) {
- return arr.filter(function(v,i) {
- return i!==0;
- });
- }
- //利用push.apply+shift
- function curtail(arr) {
- var newArr=[];
- [].push.apply(newArr, arr);
- newArr.shift();
- return newArr;
- }
9.合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组
- //利用concat
- function concat(arr1, arr2) {
- return arr1.concat(arr2);
- }
- //利用slice+push.apply
- function concat(arr1, arr2) {
- var newArr=arr1.slice(0);
- [].push.apply(newArr, arr2);
- return newArr;
- }
- //利用slice+push
- function concat(arr1, arr2) {
- var newArr=arr1.slice(0);
- for(var i=0;i<arr2.length;i++){
- newArr.push(arr2[i]);
- }
- return newArr;
- }
10.在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组
- //利用slice+splicefunction insert(arr, item, index) {
- var newArr=arr.slice(0);
- newArr.splice(index,0,item); return newArr;
- }//利用push.apply+splicefunction insert(arr, item, index) {
- var newArr=[];
- [].push.apply(newArr, arr);
- newArr.splice(index,0,item); return newArr;
- }
11.统计数组 arr 中值等于 item 的元素出现的次数
- //filter()-->利用指定的函数确定是否在返回的数组中包含某一项
- function count(arr, item) {
- var count = arr.filter(function(a) {
- return a === item; //返回true的项组成的数组
- });
- return count.length;
- }
- //map()-->对数组中的每一项进行给定函数,
- //返回每次函数条用的结果组成的数组;
- function count(arr, item) {
- var count = 0;
- arr.map(function(a) {
- if(a === item) {
- count++;
- }
- });
- return count;
- }//forEach()-->对数组中的每一项运行传入的函数
- function count(arr, item) {
- var count = 0;
- arr.forEach(function(a) {
- a === item ? count++ : 0;
- });
- return count;
- }
12.找出数组 arr 中重复出现过的元素
- //两次遍历
- function duplicates(arr) {
- //声明两个数组,a数组用来存放结果,b数组用来存放arr中每个元素的个数
- var a = [],b = [];
- //遍历arr,如果以arr中元素为下标的的b元素已存在,则该b元素加1,否则设置为1
- for(var i = 0; i < arr.length; i++){
- if(!b[arr[i]]){
- b[arr[i]] = 1;
- continue;
- }
- b[arr[i]]++;
- }
- //遍历b数组,将其中元素值大于1的元素下标存入a数组中
- for(var i = 0; i < b.length; i++){
- if(b[i] > 1){
- a.push(i);
- }
- }
- return a;
- }
- //先排序,如果后一个与前一个相等且未保存,则保存。
- function duplicates(arr) {
- var a=arr.sort(),b=[];
- for(var i in a){
- if(a[i]==a[i-1] && b.indexOf(a[i])==-1) b.push(a[i]);
- }
- return b;
- }
- //先排序然后再判断function duplicates(arr) {
- var new_arr = arr.sort();//先把arr排序
- var res = [] ;//目标容器
- for( var i = 0 ; i < new_arr.length ; i++){
- if(new_arr[i] == new_arr[i+1] &&
- new_arr[i] !=new_arr[i-1]){//判断是否重复,是否已经放入容器
- res.push(new_arr[i]);
- }
- }
- return res;
13.为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组
- function square(arr) {
- //声明一个新的数组存放结果
- var a = [];
- arr.forEach(function(e){
- //将arr中的每一个元素求平方后,加入到a数组中
- a.push(e*e);
- });
- return a;
- }
- // 使用map
- function square(arr) {
- return arr.map(function(e) {
- return e * e;
- })
- }
- // ES6箭头函数版
- const square = arr => arr.map(e => e * e);
14.在数组 arr 中,查找值与 item 相等的元素出现的所有位置
- //forEach
- function findAllOccurrences(arr, target) {
- var a=[];
- arr.forEach(function(e,index){
- if(e==target)
- a.push(index);
- })
- return a;
- }
- function findAllOccurrences(arr, target) {
- var temp = [];
- arr.forEach(function(val,index){
- val !== target || temp.push(index);
- });
- return temp;
- }//filter
- function findAllOccurrences(arr, target) {
- var result=[];
- arr.filter(function(item,index){
- return item===target&&result.push(index);
- });
- return result;
- }
相关推荐:
js数组操作方法总结(必看篇)
说明Js数组操作基本方法
以上就是js中对数组进行操作的方法总结(代码)的详细内容,更多请关注Gxl网其它相关文章!