本篇文章给大家带来的内容是关于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 数组上进行操作,并将结果返回
//splicefunction removewithoutcopy(arr, item) { for(var i=0; i<arr.length; i++) { if(item == arr[i]) { arr.splice(i,1); i--; } } return arr;}//whilefunction 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,结果返回新的数组
//利用slicefunction truncate(arr) { return arr.slice(0,-1);}//利用filterfunction truncate(arr) { return arr.filter(function(v,i,ar) { return i!==ar.length-1; });}//利用push.apply+popfunction 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,结果返回新的数组
//利用concatfunction prepend(arr, item) { return [item].concat(arr);}//使用push.applyfunction prepend(arr, item) { var newarr=[item]; [].push.apply(newarr, arr); return newarr;}//利用slice+unshift/splicefunction prepend(arr, item) { var newarr=arr.slice(0); newarr.unshift(item);//newarr.splice(0,0,item); return newarr;}
8.删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组
//利用slicefunction curtail(arr) { return arr.slice(1);}//利用filterfunction curtail(arr) { return arr.filter(function(v,i) { return i!==0; });}//利用push.apply+shiftfunction curtail(arr) { var newarr=[]; [].push.apply(newarr, arr); newarr.shift(); return newarr;}
9.合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组
//利用concatfunction concat(arr1, arr2) { return arr1.concat(arr2);}//利用slice+push.applyfunction concat(arr1, arr2) { var newarr=arr1.slice(0); [].push.apply(newarr, arr2); return newarr;}//利用slice+pushfunction 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 相等的元素出现的所有位置
//foreachfunction 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;}//filterfunction findalloccurrences(arr, target) { var result=[]; arr.filter(function(item,index){ return item===target&&result.push(index); }); return result;}
相关推荐:
js数组操作方法总结(必看篇)
说明js数组操作基本方法
以上就是js中对数组进行操作的方法总结(代码)的详细内容。