1、 计算给定数组 arr 中所有元素的总和

方法1:用arr.reduce();

function sum(arr) {
   return arr.reduce(function(prev, curr, idx, arr){
       return prev + curr;
   });
}

方法2:用forEach()

function sum(arr) {
     var s = 0;
     arr.forEach(function(val, idx, arr) {
         s += val;
     }, 0);
    return s;
};    

 

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

方法:使用filter过滤

function remove(arr, item) {
   return arr.filter(function(val,idx){
     return val!==item;
   });
}
 
3、 移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
从最后一个开始循环检测,这样不会改变删除后,元素的index
function removeWithoutCopy(arr, item) {
   for(i=arr.length-1;i>=0;i--){
       if(arr[i]==item){
         arr.splice(i,1);
        }
    }
   return arr;
}

 

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

方法:使用concat将传入的数组或非数组值与原数组合并,组成一个新的数组并返回

var arr=[1, 2, 3, 4];
function append(arr, item) {
     var result=arr.concat(item);
     return result;
}
console.log(append(arr, 10));
console.log(arr);        

 

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

方法1:使用 arr.slice(0,-1);

var arr=[1, 2, 3, 4];
function truncate(arr) {
   return arr.slice(0,-1);
}
console.log(truncate(arr)); //[1, 2, 3]
console.log(arr); //[1, 2, 3, 4]

方法2:用filter

var arr=[1, 2, 3, 4];
function truncate(arr) {
  return arr.filter(function (val,index,arr) {
     return index!=arr.length-1;
   });
}
console.log(truncate(arr)); //[1, 2, 3]
console.log(arr); //[1, 2, 3, 4]

 

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

方法1:用unshift

var arr=[1, 2, 3, 4];
function prepend(arr, item) {
   var newArr=arr.slice(0);
   newArr.unshift(item);
   return newArr;
}
console.log(prepend(arr,10)); //[10, 1, 2, 3, 4]
console.log(arr); //[1, 2, 3, 4]

方法2:用concat(),不改变原数组

var arr=[1, 2, 3, 4];
function prepend(arr, item) {
   return [item].concat(arr);
}
console.log(prepend(arr,10)); //[10, 1, 2, 3, 4]
console.log(arr); //[1, 2, 3, 4]

 

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

方法1:用slice()

var arr=[1, 2, 3, 4];
function curtail(arr) {
   return arr.slice(1);
}
console.log(curtail(arr,10)); //[2, 3, 4]
console.log(arr); //[1, 2, 3, 4]

方法2:用slice() + shift()

var arr=[1, 2, 3, 4];
function curtail(arr) {
   var newArr= arr.slice(0);
   newArr.shift();
   return newArr;
}
console.log(curtail(arr,10)); //[2, 3, 4]
console.log(arr); //[1, 2, 3, 4]

方法3:用filter

var arr=[1, 2, 3, 4];
function curtail(arr) {
   return arr.filter(function (val,index,arr) {
      return index!==0;
   });
}
console.log(curtail(arr,10)); //[2, 3, 4]
console.log(arr); //[1, 2, 3, 4]

 

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

var arr1=[1, 2, 3, 4];
var arr2=[5, 6, 7, 8];
function concat(arr1, arr2) {
   return arr1.concat(arr2);
}
console.log(concat(arr1, arr2)); //[1, 2, 3, 4, 5, 6, 7, 8]
console.log(arr1); //[1, 2, 3, 4]
console.log(arr2); //[5, 6, 7, 8]

 

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

splice():第二个参数是删除的个数。没有删除写0

var arr=[1, 2, 3, 4];
function insert(arr, item, index) {
   var newArr=arr.slice(0);
   newArr.splice(index,0,item);
   return newArr;
}
console.log(insert(arr, 'z', 2)); //[1, 2, "z", 3, 4]
console.log(arr); //[1, 2, 3, 4]

 

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

var arr=[1, 2, 4, 4, 3, 4, 3];
function count(arr, item) {
   var newArr=arr.filter(function (val,index,arr) {
       return val===item;
   });
   return newArr.length;
}
console.log(count(arr, 4)); //3

 

11、 找出数组 arr 中重复出现过的元素

方法1:用filter

var arr=[1, 2, 4, 4, 3, 3, 1, 5, 3];
function duplicates(arr) {
 var newArr=[];
 arr.forEach(function(value1,index,arr){
   var len=arr.filter(function(value2,idx){ //找出相同的元素集合长度
     return value2===value1;
   }).length;

   var len2=newArr.filter(function (value3) { //在新数组中,找是否有该元素
     return value3===value1
   }).length;

   if(len>=2 && len2===0){
     newArr.push(value1);
   }
 });
 return newArr;
}
console.log(duplicates(arr)); //[1, 4, 3]

方法2:用indexOf

var arr=[1, 2, 4, 4, 3, 3, 1, 5, 3];
function duplicates(arr) {
 var result = [];
 arr.forEach(function(elem){
   if(arr.indexOf(elem) !=arr.lastIndexOf(elem) && result.indexOf(elem) == -1){
     result.push(elem);
   }
 });
 return result;
}
console.log(duplicates(arr)); //[1, 4, 3]

 

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

方法1:用map

var arr=[1, 2, 3, 4];
function square(arr) {
 return arr.map(function(item,index,array){
   return item*item;
 })
}
console.log(square(arr)); //[1, 4, 9, 16]

方法2:forEach循环

var arr=[1, 2, 3, 4];
function square(arr) {
 var result=[];
 arr.forEach(function(val,index,arr){
   result.push(val * val);
 });
 return result;
}
console.log(square(arr)); //[1, 4, 9, 16]

 

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

var arr=[1, 2, 3, 4, 1];
function findAllOccurrences(arr, target) {
 var result=[];
 for(var i=0;i<arr.length;i++){
  if(arr[i]===target){
   result.push(i);
  }
 }
  return result;
}
console.log(findAllOccurrences(arr, 1)); //[0, 4]

 

版权声明:本文为cindy2035原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cindy2035/p/10481529.html