梳理一些简单的编程题(二)

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

        // 利用concat
        function concat(arr1,arr2){
            return arr1.concat(arr2);
        }
        // 利用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;
        }
        // 利用slice+push.apply
        function concat(arr1,arr2){
            var newArr = arr1.slice(0);
            [].push.apply(newArr,arr2);
            return newArr;
        }
        // 普通的迭代拷贝
        function concat(arr1,arr2){
            var newArr = [];
            for(var i=0;i<arr1.length;i++){
                newArr.push(arr1[i])
            }
            for(var j=0;j<arr2.length;j++){
                newArr.push(arr2[j])
            }
            return newArr
        }

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

    // 利用slice+splice
      function add(arr,index,item){
          var newArr = arr.slice(0);
          newArr.splice(index,0,item);
          return newArr;
      }
    //   利用slice+concat
      function add(arr,index,item){
          return arr.slice(0,index).concat(item,arr.slice(index))
      }
    //   利用concat+splice
     function add(arr,index,item){
         var newArr  = arr.concat();
         newArr.splice(index,0,item);
         return newArr
     }
    //  利用push.apply+aplice
     function add(arr,index,item){
         var newArr = [];
         [].push.apply(newArr,arr);
         newArr.splice(index,0,item);
         return newArr
     }
    //  普通的迭代拷贝
    function add(arr,index,item){
        var newArr = [];
        for(var i=0;i<arr.length;i++){
            newArr.push(arr[i])
        }
        newArr.splice(index,0,item);
         return newArr
    }

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

    // for循环
    function times(arr,item){
        var count = 0;
        for(var i = 0;i<arr.length;i++){
            if(arr[i]==item){
                count++;
            }
        }
        return count;
    }
    // filter()  利用指定的函数确定是否在返回的数组中包含某一项
    function times(arr,item){
        var count = arr.filter(function(a){
            return a == item;
        })
        return count.length
    }
//    map
    function times(arr,item){
        var count = 0;
        arr.map(function(a){
            if(a == item){
                count++
            }
        })
        return count;
    }
    // forEach()
    function times(arr,item){
        var count = 0;
        arr.forEach(a => {
            a==item?count++:0
            
        });
        return count
    }

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

    function find(arr){
        var newArr = arr.sort();
        var result = [];
        for(var i = 0;i<newArr.length;i++){
            if(newArr[i] == newArr[i+1]&&newArr[i]!== newArr[i-1]){
                result.push(newArr[i])
            }
        }
        return result;
    }
    function find(arr){

        // Array.prototype.filter 接受三个参数,(element,index,array)
        return arr.sort().filter(function(e,i){
            return arr[i] == arr[i+1]&&arr[i]!== arr[i-1];
        })
    }

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

    function square(arr){
        var newArr = arr.slice(0);
        var result = [];
        for(var i = 0 ; i<newArr.length;i++){
            result.push(arr[i]*arr[i]);  
        }
        return result;
    }
    function square1(arr){
        return arr.map(function(item,index,array){
            return item*item;
        })
    }

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

    //filter  
    function findAllOccurrences(arr,item){
        var result = [];
         arr.filter(function(element,index){
            return element ==item &&result.push(index)
        })
        return result
     }
   //for循环
    function findAllOccurrences(arr,item){
        var result = [];
        for(var i = 0;i<arr.length;i++){
            if(arr[i]==item){
                result.push(i)
            }
        }
        return result
    }

猜你喜欢

转载自blog.csdn.net/weixin_41910848/article/details/81610350
今日推荐