Home  >  Article  >  Web Front-end  >  Summary of methods for operating arrays in js (code)

Summary of methods for operating arrays in js (code)

不言
不言Original
2018-08-23 15:16:211731browse

What this article brings to you is a summary (code) of methods for operating arrays in js. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

1. Find the position of the element item in the given array 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. Calculate the sum of all elements in the given array 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. Remove all elements in the array arr whose values ​​are equal to item. Do not modify the array arr directly. The result will be a new array

//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. Remove all elements in the array arr whose values ​​are equal to item and operate directly on the given arr array. , and return the result

//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. Add the element item at the end of the array arr. Do not modify the array arr directly. The result will be a new array

//普通的迭代拷贝
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. Delete the last element of the array arr. Do not modify the array arr directly, the result will be a new array

//利用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(&#39;,&#39;);
    newArr.pop();    
    return newArr;
}

7. Add the element item at the beginning of the array arr. Do not modify the array arr directly. The result will be a new array

//利用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. Delete the first element of the array arr. Do not modify the array arr directly, the result will be a new array

//利用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. Merge array arr1 and array arr2. Do not modify the array arr directly. The result will be a new array

//利用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. Add the element item at the index of the array arr. Do not modify the array arr directly, the result will be returned as a new array

//利用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. Count the number of occurrences of elements in the array arr whose value is equal to 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. Find the repeated elements in the array 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. Find the second power of each element in the array arr. Do not modify the array arr directly, the result will be a new array

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. In the array arr, find all positions where the element whose value is equal to item appears

//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;
}

Related recommendations:

Summary of js array operation methods (must read)

Explain the basic methods of Js array operation

The above is the detailed content of Summary of methods for operating arrays in js (code). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn