第一次在博客园写文章,之前一直自己做记录。现在前端工作两年了,对前端整体技术有较清晰的了解。项目用了vue,react之类的写,如今打算从基础开始,慢慢深入了解原生的JS.这几天清明节,玩的嗨皮,最后一次开始赶作业(我规定自己每天至少一个Js题,在网上随机找的。*~*)

  今天主要是重写了数组的remove(),concat()方法以及查找数组中对应元素。下面做一个简单分享:

  1.重写remove()方法,返回新数组

  

      function remove(arr, item) {
        var arry=[]
        for(var i=0;i<arr.length;i++){
          if(arr[i]!=item){
            arry.push(arr[i])
          }
        }
        return arry
      }

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

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

        }
        return arr
      }

  注:这里要i--;arr.length--;是因为在给定的数组中操作的。splice每次移除都会改变arr的长度。

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

    function append(arr, item) {
      Array.prototype.clone=function(){
        return this.slice(0)
      }
      var arry=arr.clone();
      arry.push(item);
      return arry
    }

  注:这里我特意给数组的原型加了一个克隆方法是方法初学者理解。因为直接给数组赋值如:var arry=arr;是赋值引用,

  当我改变arry时,arr源会跟着改变,所以我选择克隆一个新数组。

  4.数组的合并,不能在原有数组上修改。 

    function concat(arr1,arr2) {
      var arry=arr1.slice(0);
      for(var i=0;i<arr2.length;i++){
        arry.push(arr2[i]);
      }
      return arry;
    }

  注:这里我也用到了第3题的克隆(截取)方式

下面我再用一组图简单介绍一下操作数组用烂了的几个函数:push(),pop(),unshift(),shift()

  

  好啦,今天就写到这,欢迎多多指教!

js数组的几个练习题的更多相关文章

  1. 小兔JS教程(四)-- 彻底攻略JS数组

    在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...

  2. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  3. 转→js数组遍历 千万不要使用for...in...

    看到一篇内容还不错,但是排版实在糟糕, 逼死强迫症患者啊,直接拉下去找原文连接,找到了,但是已经消失了···500错误... 第一次因为实在看不下去一篇博客的排版, 为了排版而转载... 转载地址:h ...

  4. js数组操作大全

    原文(http://www.cnblogs.com/webhotel/archive/2010/12/21/1912732.html) 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简 ...

  5. js数组去重的4种方法

    js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...

  6. js 数组处理函数

    本文转载自有有<js 数组处理函数> concat 将参数列表连接到原数组后面形成一个新的数组并返回,原有数组不受影响. var arr = ["a","b& ...

  7. js 数组赋值问题 :值传递还是引用?

    转载于知乎var a = [1,2,3]; var b = a; a = [4,5,6]; alert(b); //[1,2,3] 面试时被问到这样一个问题,竟然从来没试过... 当时直接的理解,数组 ...

  8. JS数组方法汇总 array数组元素的添加和删除

    js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[ ...

  9. js数组操作

    用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手,一下狠心,我学! ...

随机推荐

  1. Transport (VMDB) error -44: Message

     关于点击电源按钮的时候出现了这情况Transport (VMDB) error -44: Message.   虚拟机有个服务没开.开始菜单--运行--services.msc 回车   找到VMw ...

  2. git链接GitHub命令及基本操作

    Git是一款不错的代码管理工具,下面引用百科的一段话:  Git是用于Linux内核开发的版本控制工具.与CVS.Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服 ...

  3. P1137 旅行计划-----洛谷

    用了STL,其他的没什么,赤裸裸的拓扑排序 下面给出代码 #include<cstdio> #include<iostream> #include<vector> ...

  4. 前端数据统计用做Bootstrap的一些柱状图、饼状图和折线图案例

    Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. Bootstrap ...

  5. css中的那些布局

    因为最近心血来潮,就总结了一下css中的几种常见的多列布局. 两列自适应布局 两列自适应布局算是css布局里面最基础的一种布局了,不少网站在使用. 这种布局通常是左侧固定,右边自适应,当然也有反过来的 ...

  6. Linux的capability深入分析

    Linux的capability深入分析详见:http://blog.csdn.net/u014338577/article/details/48791953 lxd中对容器能力的限制: 普通用户不能 ...

  7. 利用instsrv和srvany来手动安装服务

    Windows提供了两个小工具instsrv.exe和srvany.exe来把任何应用包装成windows服务.顾名思义instsrv(install service)是用来安装服务的,而srvany ...

  8. 2017-3-9 SQL server 数据库

    数据库的定义:数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,简单说数据库是一些存储在硬盘上的数据文件,随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所 ...

  9. Android实现录屏直播(三)MediaProjection + VirtualDisplay + librtmp + MediaCodec实现视频编码并推流到rtmp服务器

    请尊重分享成果,转载请注明出处,本文来自Coder包子哥,原文链接:http://blog.csdn.net/zxccxzzxz/article/details/55230272 Android实现录 ...

  10. kali linux 忘记root密码重置办法

    有段时间没用kali linux 的,加上最近装的系统有比较多,系统root的密码忘掉了,真是麻烦啊.之前在网上看到的一些方法尝试后没进的去,可能是因为不同的linux 不一样吧. 如果因为忘记密码而 ...