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

1. 找出元素item在给定数组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;
        }

indexOf()方法可以返回某个指定的字符串值在字符串中首次出现的位置

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

        function sum(arr) {
            var sum = 0;
            for(var i = 0 ; i < arr.length;i++){
                sum += arr[i]
            }
            return sum 
        }
        function sum(arr){
            if(arr.length == []){
                return 0;
            }else if(arr.length == 1){
                return arr[0];
            }else{
                return arr[0] + sum(arr.slice(1));
            }
        }
        function sum(arr){
            return eval(arr.join('+'))
        }
         //这里先将所有数组项通过字符串"+"连为一个字符串"1+2+3+4+5+6...",
          //然后返回的这个字符串传给eval()方法,eval()方法接收了这段字符串后,就直接将这段字符串中的代码放在当前作用域下执行了。

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

         function qc(arr,item){
             for(var i = 0;i<arr.length;i++){
                 if(item == arr[i] ){
                     arr.splice(i,1);
                     i--
                 }
             }
             return arr;
         }
         function qc(arr,item){
             for(var i = 0;i < arr.length;i++){
                 if(arr[0]!==item){
                     arr.push(arr[0]);
                 }
                 arr.shift()
             }
             return arr;
         }

push()和shift()的方法参照前面的博客:https://blog.csdn.net/weixin_41910848/article/details/81507334

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

         function remove(arr,item){
            //  声明一个新数组保存结果
             var result = [];
            //  循环遍历
             for(var i = 0 ;i < arr.length ;i++){
                //  如果arr[i]不等于item,就加入数组
                 if(arr[i] != item){
                     result.push(arr[i]);
                 }
             }
             return result;
         }
         function remove(arr,item) {
             return arr.filter(function(ele){
                 return ele!=item;
             })
         }

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

        function add(arr,item) {
            var newArr = [];
            for(var i = 0 ; i < arr.length;i++){
                newArr.push(arr[i]);
            }
            newArr.push(item);
            return newArr;
        }
        function add(arr,item){
            var newArr = arr.slice(0);
            newArr.push(item);
            return newArr;
        }
        function add(arr,item){
            return arr.concat(item)
        }

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

        function del(arr){
            var newArr = [];
            for(var i = 0 ; i < arr.length;i++){
                newArr.push(arr[i]);
            }
            newArr.pop();
            return newArr;
        }
        function del(arr){
        return arr.slice(0,-1);
        }
        function del(arr){
            var newArr = [];
            for(var i = 0 ; i < arr.length-1;i++){
                newArr.push(arr[i]);
            }
            return newArr;
        }
        function del(arr){
            return arr.filter(function(v,i,ar){
                return i!==ar.length-1
            })
        }

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

        // concat + reverse
        function addfirst(arr,item) {
            var newArr = arr.concat(item);
            return  newArr.reverse();
        }
        //普通的迭代拷贝
        function addfirst(arr,item){
            var result = [];
            for(var i = 0;i< arr.length;i++){
                result.push(arr[i])
            }
           result.unshift(item);
           return result;
        }
        //利用concat    
        function addfirst(arr,item){
            return [item].concat(arr);
        }


        console.log(addfirst([1,1,2,3,4,4],8));

猜你喜欢

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