美文网首页
牛客JS题目练习

牛客JS题目练习

作者: 字母31 | 来源:发表于2017-10-20 18:37 被阅读0次

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

    输入  [ 1, 2, 3, 4 ], 3
    输出  2
    function indexOf(arr, item) {
        var pos = -1;
        arr.forEach(function(item1,index){
            if(arr[index] === item){
                pos = index
                return
            }
        }) 
        return pos
    }
    

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

    输入  [ 1, 2, 3, 4 ]
    输出  10
    function sum(arr) {
        var sum = 0
        arr.forEach(function(ele,index){
            sum += ele
        })
        return sum
    }
    

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

    输入  [1, 2, 3, 4, 2], 2
    输出  [1, 3, 4]
    function remove(arr, item) {
        return arr.filter(function(elem,index){
            return elem != item
        })
    }
    

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

    输入  [1, 2, 3, 4, 2], 2
    输出  [1, 3, 4]
    function removeWithoutCopy(arr, item) {
         arr.forEach(function(elem,index,arr){
            if(elem === item){
                arr.splice(index,1)
                arr.length --        //注意此步骤,原数组删除后长度改变,遍历需注意
            }
        })
        return arr
    }
    

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

    输入  [1, 2, 3, 4],  10
    输出  [1, 2, 3, 4, 10]
    ffunction append(arr, item) {
        var newArr = []
        // var arr2 = arr.slice(0);  也可以复制原数组
        arr.forEach(function(elem){
            newArr.push(elem)
        })
        newArr.push(item)
        return newArr
    }
    

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

    输入  [1, 2, 3, 4], 4
    输出  [1, 2, 3]
    function truncate(arr) {
       var newArr=[]
       newArr=arr.slice(0)
       newArr.pop()
       return newArr
    }
    

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

    输入  [1, 2, 3, 4], 10
    输出  [10, 1, 2, 3, 4]
    function prepend(arr, item) {
       var newArr=[]
       newArr=arr.slice(0)
       newArr.unshift(item)
       return newArr
    }
    

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

    输入  [1, 2, 3, 4]
    输出  [ 2, 3, 4]
    function curtail(arr) {
       var newArr=arr.slice(0)
       newArr.shift()
       return newArr
    }
    

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

    输入  [1, 2, 3, 4], ['a', 'b', 'c', 1]
    输出  [1, 2, 3, 4, 'a', 'b', 'c', 1]
    function concat(arr1, arr2) {
       var newArr=arr1.slice(0)
       return newArr.concat(arr2)
    }
    

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

    输入  [1, 2, 3, 4], 'z', 2
    输出  [1, 2, 'z', 3, 4]
    function insert(arr, item, index) {
       var newArr=arr.slice(0)
       newArr.splice(index,0,item)
       return newArr 
    }
    

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

    输入  [1, 2, 4, 4, 3, 4, 3], 4
    输出  3
    function count(arr, item) {
      var count = 0
      arr.forEach(function(elem){
          if(elem === item){
              count++
          }
      })
      return count
    }
    

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

    输入  [1, 2, 4, 4, 3, 3, 1, 5, 3]
    输出  [1, 3, 4]
    function duplicates(arr) {
       var newArr=[]
       arr.forEach(function(elem,index){
           if(index != arr.lastIndexOf(elem) && newArr.indexOf(elem) === -1){
               newArr.push(elem)
           }
       })
       return newArr
    }
    

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

    输入  [1, 2, 3, 4]
    输出  [1, 4, 9, 16]
    function square(arr) {
        return arr.map(function(elem){
            return elem * elem
        })
    }
    

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

    输入  'abcdefabc'
    输出  [0, 6]
    function findAllOccurrences(arr, target) {
        var newArr = []
        arr.forEach(function(elem,index){
            if(elem === target){
                newArr.push(index)
            }
        });
        return newArr
    } 
    

    15、实现一个打点计时器,要求

    1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
    2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
    3、第一个数需要立即输出

    function count(start, end) {
       console.log(start++)                               //打出第一个数字后加start,否则会打两次start
       var timer = setInterval(function(){
           if(start <= end){
               console.log(start++)
           }else{
               clearInterval(timer)
           }
       },100)
       return {
           cancel:function(){clearInterval(timer)}
       }
    }
    

    相关文章

      网友评论

          本文标题:牛客JS题目练习

          本文链接:https://www.haomeiwen.com/subject/czwvuxtx.html