当前位置:Gxlcms > JavaScript > js中对数组进行操作的方法总结(代码)

js中对数组进行操作的方法总结(代码)

时间:2021-07-01 10:21:17 帮助过:3人阅读

本篇文章给大家带来的内容是关于js中对数组进行操作的方法总结(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1.找出元素 item 在给定数组 arr 中的位置

  1. function indexOf(arr, item) {
  2. if (Array.prototype.indexOf){ //判断原型中是否支持该方法
  3. return arr.indexOf(item);
  4. } else {
  5. for (var i = 0; i < arr.length; i++){
  6. if (arr[i] === item){
  7. return i;
  8. }
  9. }
  10. }
  11. return -1;
  12. }

2.计算给定数组 arr 中所有元素的总和

  1. //forEach遍历:
  2. function sum(arr) {
  3. var s = 0;
  4. arr.forEach(function(val, idx, arr) {
  5. s += val;
  6. }, 0);
  7. return s;
  8. };
  9. //eval:
  10. function sum(arr) {
  11. return eval(arr.join("+"));
  12. };

3.移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组

  1. //splice()
  2. function remove(arr,item){
  3. var newarr = arr.slice(0);
  4. for(var i=0;i<newarr.length;i++){
  5. if(newarr[i] == item){
  6. newarr.splice(i,1);
  7. i--;
  8. }
  9. }
  10. return newarr;
  11. }//push()
  12. function remove(arr,item){
  13. var newarr = [];
  14. for(var i=0;i<arr.length;i++){
  15. if(arr[i] != item){
  16. newarr.push(arr[i]);
  17. }
  18. }
  19. return newarr;
  20. }//Array.prototype.filter()
  21. function remove(arr,item){
  22. return arr.filter(function(ele){
  23. return ele != item;
  24. })
  25. }

4.移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回

  1. //splice
  2. function removeWithoutCopy(arr, item) {
  3. for(var i=0; i<arr.length; i++)
  4. {
  5. if(item == arr[i])
  6. {
  7. arr.splice(i,1);
  8. i--;
  9. }
  10. }
  11. return arr;
  12. }//while
  13. function removeWithoutCopy(arr, item) {
  14. for(var i in arr){
  15. while(arr[i]==item){
  16. arr.splice(i,1);
  17. }
  18. }
  19. return arr;
  20. }

5.在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组

  1. //普通的迭代拷贝
  2. var append = function(arr, item) {
  3. var length = arr.length,
  4. newArr = [];
  5. for (var i = 0; i < length; i++) {
  6. newArr.push(arr[i]);
  7. }
  8. newArr.push(item);
  9. return newArr;
  10. };//使用slice浅拷贝+push组合
  11. function append(arr, item) {
  12. var newArr=arr.slice(0);
  13. newArr.push(item);
  14. return newArr;
  15. }

6.删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组

  1. //利用slice
  2. function truncate(arr) {
  3. return arr.slice(0,-1);
  4. }
  5. //利用filter
  6. function truncate(arr) {
  7. return arr.filter(function(v,i,ar) {
  8. return i!==ar.length-1;
  9. });
  10. }
  11. //利用push.apply+pop
  12. function truncate(arr) {
  13. var newArr=[];
  14. [].push.apply(newArr, arr);
  15. newArr.pop(); return newArr;
  16. }
  17. //利用join+split+pop 注意!!!:数据类型会变成字符型
  18. function truncate(arr) {
  19. var newArr = arr.join().split(',');
  20. newArr.pop();
  21. return newArr;
  22. }

7.在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组

  1. //利用concat
  2. function prepend(arr, item) {
  3. return [item].concat(arr);
  4. }
  5. //使用push.apply
  6. function prepend(arr, item) {
  7. var newArr=[item];
  8. [].push.apply(newArr, arr);
  9. return newArr;
  10. }
  11. //利用slice+unshift/splice
  12. function prepend(arr, item) {
  13. var newArr=arr.slice(0);
  14. newArr.unshift(item);//newArr.splice(0,0,item);
  15. return newArr;
  16. }

8.删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组

  1. //利用slice
  2. function curtail(arr) {
  3. return arr.slice(1);
  4. }
  5. //利用filter
  6. function curtail(arr) {
  7. return arr.filter(function(v,i) {
  8. return i!==0;
  9. });
  10. }
  11. //利用push.apply+shift
  12. function curtail(arr) {
  13. var newArr=[];
  14. [].push.apply(newArr, arr);
  15. newArr.shift();
  16. return newArr;
  17. }

9.合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组

  1. //利用concat
  2. function concat(arr1, arr2) {
  3. return arr1.concat(arr2);
  4. }
  5. //利用slice+push.apply
  6. function concat(arr1, arr2) {
  7. var newArr=arr1.slice(0);
  8. [].push.apply(newArr, arr2);
  9. return newArr;
  10. }
  11. //利用slice+push
  12. function concat(arr1, arr2) {
  13. var newArr=arr1.slice(0);
  14. for(var i=0;i<arr2.length;i++){
  15. newArr.push(arr2[i]);
  16. }
  17. return newArr;
  18. }

10.在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组

  1. //利用slice+splicefunction insert(arr, item, index) {
  2. var newArr=arr.slice(0);
  3. newArr.splice(index,0,item); return newArr;
  4. }//利用push.apply+splicefunction insert(arr, item, index) {
  5. var newArr=[];
  6. [].push.apply(newArr, arr);
  7. newArr.splice(index,0,item); return newArr;
  8. }

11.统计数组 arr 中值等于 item 的元素出现的次数

  1. //filter()-->利用指定的函数确定是否在返回的数组中包含某一项
  2. function count(arr, item) {
  3. var count = arr.filter(function(a) {
  4. return a === item; //返回true的项组成的数组
  5. });
  6. return count.length;
  7. }
  8. //map()-->对数组中的每一项进行给定函数,
  9. //返回每次函数条用的结果组成的数组;
  10. function count(arr, item) {
  11. var count = 0;
  12. arr.map(function(a) {
  13. if(a === item) {
  14. count++;
  15. }
  16. });
  17. return count;
  18. }//forEach()-->对数组中的每一项运行传入的函数
  19. function count(arr, item) {
  20. var count = 0;
  21. arr.forEach(function(a) {
  22. a === item ? count++ : 0;
  23. });
  24. return count;
  25. }

12.找出数组 arr 中重复出现过的元素

  1. //两次遍历
  2. function duplicates(arr) {
  3. //声明两个数组,a数组用来存放结果,b数组用来存放arr中每个元素的个数
  4. var a = [],b = [];
  5. //遍历arr,如果以arr中元素为下标的的b元素已存在,则该b元素加1,否则设置为1
  6. for(var i = 0; i < arr.length; i++){
  7. if(!b[arr[i]]){
  8. b[arr[i]] = 1;
  9. continue;
  10. }
  11. b[arr[i]]++;
  12. }
  13. //遍历b数组,将其中元素值大于1的元素下标存入a数组中
  14. for(var i = 0; i < b.length; i++){
  15. if(b[i] > 1){
  16. a.push(i);
  17. }
  18. }
  19. return a;
  20. }
  21. //先排序,如果后一个与前一个相等且未保存,则保存。
  22. function duplicates(arr) {
  23. var a=arr.sort(),b=[];
  24. for(var i in a){
  25. if(a[i]==a[i-1] && b.indexOf(a[i])==-1) b.push(a[i]);
  26. }
  27. return b;
  28. }
  29. //先排序然后再判断function duplicates(arr) {
  30. var new_arr = arr.sort();//先把arr排序
  31. var res = [] ;//目标容器
  32. for( var i = 0 ; i < new_arr.length ; i++){
  33. if(new_arr[i] == new_arr[i+1] &&
  34. new_arr[i] !=new_arr[i-1]){//判断是否重复,是否已经放入容器
  35. res.push(new_arr[i]);
  36. }
  37. }
  38. return res;

13.为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组

  1. function square(arr) {
  2. //声明一个新的数组存放结果
  3. var a = [];
  4. arr.forEach(function(e){
  5. //将arr中的每一个元素求平方后,加入到a数组中
  6. a.push(e*e);
  7. });
  8. return a;
  9. }
  10. // 使用map
  11. function square(arr) {
  12. return arr.map(function(e) {
  13. return e * e;
  14. })
  15. }
  16. // ES6箭头函数版
  17. const square = arr => arr.map(e => e * e);

14.在数组 arr 中,查找值与 item 相等的元素出现的所有位置

  1. //forEach
  2. function findAllOccurrences(arr, target) {
  3. var a=[];
  4. arr.forEach(function(e,index){
  5. if(e==target)
  6. a.push(index);
  7. })
  8. return a;
  9. }
  10. function findAllOccurrences(arr, target) {
  11. var temp = [];
  12. arr.forEach(function(val,index){
  13. val !== target || temp.push(index);
  14. });
  15. return temp;
  16. }//filter
  17. function findAllOccurrences(arr, target) {
  18. var result=[];
  19. arr.filter(function(item,index){
  20. return item===target&&result.push(index);
  21. });
  22. return result;
  23. }

相关推荐:

js数组操作方法总结(必看篇)

说明Js数组操作基本方法

以上就是js中对数组进行操作的方法总结(代码)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行