数组
   数组
      1.数组:数组是一组数据(数据类型不限,任意)的有序集合===>我们写代码,一般一个数组只放一种数据类型的数据

      2.我们写代码,一般一个数组只放一种类型的数据

      3.注意: 大多数的语言里面数组的存储是连续的,但是js的数组特点决定了js的数组不一定是连续的。
   数组的特点
      1.作用:将许多零散的数据组成一个整体

      2.数组本身属于复杂数据类型(引用数据类型/对象),即我们使用的数组就是“对象”

      3.数据类型不限,任意(一般一个数组只放一种数据类型的数据)

      4.根据需要,对数组内部数据进行一些操作(增删查改)
   数组的创建
      1.字面量的方式
      例如: let arr = [];(没有初始化值)
      例如: let arr = [ 1,2,3,4,5,"6"];(初始化了六个值)

      2.构造函数的方式
      例如: le arr = new Array();(没有初始化值)
      例如: let arr = new Array(1,2,3,4,5,"6")(为数组初始化)
      如果let arr = new Array(5)就相当于创建了五个空元素的arr数组
   数组的下标
      数组中存储是数据时有序的,我们就给每一个元素加一个编号,称之为“下标”/"索引"(index)
      索引的特点: index从0开始,到 “数组元素个数-1” 结束
      下标的使用: 数组名称[index]===> 查看数据:(查询时,越界?访问到一个undefined值,不管学什么语言,越界一般是不允许的)
    多维数组
      数组里面嵌套数组的这种结构,就叫做多维数组。二维数组本质上就是一维数组作为了一个一维数组的元素,即数组的数组;
      例如:let arr = [[1,2,3],[4,5,6]];
   数组的遍历
      1.普通for循环
      2.for...of遍历(ES6新增的)注意:可以把value看成每次循环按顺序取了arr中元素的值,而value不代表arr的元素,所以value的赋值不影响arr中的元素
    ES6中的操作
      1.扩展
      “...”:扩展运算符 ===>把一个整体扩展开来,相当于解构一个数组的一个维度。
      运用:
      a.合并数组  let newArr = [...arr1,...arr2]
      b.拷贝数组  let arr2 = [...arr1]

      2.解构
      等号两边保持解构一致(关于数组),然后按照对应的位置,把右边的数据赋值给左边的变量;实现批量赋值

      注意
      a、当左边的变量多余右边的数据时:没有对上号的变量值不变
      b、当左边的变量少余右边的数据时:没有对上号的数据不影响赋值

    运用场景
      a、墨水交换
       let num1 = 9,num2 = 0,t;
       [num1,num2] = [num2,num1];
      b、获取对应的值(前面用逗号隔开)
      let [,,,d,e] = arr;
   排序 例如:冒泡与选择等
      1.冒泡排序

      let array = [5,2,7,9,8,0,44,121,1];
      for(let i = 0; i < array.length - 1; i++){
          for (let j = array.length - 1; j > i; j--) {
              if(array[j]<array[j - 1]){
                  [array[j],array[j - 1]]=[array[j - 1],array[j]];
              }
          }
      }
      console.log(array);

      2.选择排序
      let array = [5,2,7,9,8,0,44,121,1];
      for (let i = 0; i < array.length-1; i++) {
          let min = array[i],index=i;
          for (let j = 1+i; j < array.length; j++) {
             if(min > array[j]){
                 min = array[j];
                 index = j;
             }
          }
         [array[i],array[index]]=[array[index],array[i]];
      }

      数组的方法(都很实用)
       1.添加
        push(value) 概念:在尾部添加元素,并返回一个新的长度
        unshift(value) 概念:在数组开头添加元素,并返回一个新的长度
       

       2.删除
        pop() 概念:删除最后一个元素
        shift() 概念:删除第一个元素  
        splice(参数1,参数2,参数3) 
        第一个参数:整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
        第二个参数:要删除的项目数量。如果设置为 0,则不会删除项目。
        第三个参数以及后面的参数:可选。向数组添加的新项目。
        返回值:包含被删除项目的新数组,如果有的话。

       3.查找
        indexOf(value) 概念:查找所在位置(index),从头开始查,查到第一个结束
        lastIndexOf(value) 从尾部开始查找和indexOf相反
        includes(value) 要查询的值,返回有没有(true/false)

       4.提取
        slice() 通过指定开始和结束索引,来提取元素(组成新数组),不影响原数组===>[start,end)

       5.拼接
        join("value")拼接:separator参数代表了“分隔符”

       6.切割
        split("value") 切割:上一个方法的反向操作

       7.其它
        concat() 
        把B数组拼接到A数组后,作为返回值返回,不影响原数组
        reverse()
        反序的改变原数组
        sort()
        默认规则是按照字典顺序的

        ex.sort(function(a,b){
            return a-b;//结果是负数b大,正数a大,相等值为0
        });
        ex.reverse();
        console.log(ex);//true====》没有副本的产生,返回值就是原数组
      数组的遍历
        - foreach 普通遍历,没有return返回值
        - map 单独处理每一个元素:会把每一个元素做return后面的处理,返回组成新的数组
        - filter 过滤,满足条件留下组成新数组
        - some/every some(只要有一个满足,返回true)/every(必须全部满足,才返回true)
        - reduce/reduceRight(迭代计算)
        - 将数组第一个元素和第二个元素分别赋值给prev,next,然后通过return后面的表达式获得一个值,该值作为下一次循环的prev,而next取下一个元素,直到取完所有元素,获得的最终值作为        返回值返回

JavaScript数组学习总结的更多相关文章

  1. javascript 数组学习(一)

    今天学习了一下<javascript权威指南(第6版)>的第七章:数组 一.数组的创建: 数组的创建有3种方法: var colors = new Array(3);//可以省略new v ...

  2. Javascript数组学习

    记录下学习数组的过程 1.创建数组 var ary1 = new Array();//空数组 var ary2= [] ;//字面量 2.数组检测 //方法一 if(array instanceof ...

  3. 【学习笔记03】Javascript数组学习

    数组定义的方法一: var Myarr=new Array(); //先声明一维 for(var i=0;i<2;i++){ //一维长度2 Myarr[i]=new Array(); //再声 ...

  4. javascript数组学习1

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. JavaScript 数组学习总结

    类数组转数组 ES5解决方案 let arr = Array.prototype.slice.call(arrlike) ES6解决方案 let arr = Array.from(arrlike) / ...

  6. JavaScript数组(二)实例

    一.Js 数组示例常用操作. $(function () { Javascript数组学习 var nums = new Array([10], [5],[ 8], [2], [3]); 数组反转 n ...

  7. RX学习笔记:JavaScript数组操作

    RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...

  8. [前端JS学习笔记]JavaScript 数组

    一.JavaScript数组的奇葩 大多数语言会要求数组的元素是同个类型, 但是JavaScript允许数组元素为多种类型. var arr = ["羽毛球", 666, {&qu ...

  9. JavaScript基础学习(三)—数组

    一.数组简介     JavaScript数组的每一项都可以保存任何类型的数据,也就是说数组的第一个位置保存字符串,第二个位置可以保存数值,第三个位置可以保存对象,而且数组的大小是可以动态调整的,即可 ...

随机推荐

  1. 背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件

    [源码下载] 背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件 作者: ...

  2. 分布式系统中 Unique ID 的生成方法

    http://darktea.github.io/notes/2013/12/08/Unique-ID Snowflake 生成的 unique ID 的组成 (由高位到低位): 41 bits: T ...

  3. 7.ViewPagerIndicator

     ViewPager指针项目,在使用ViewPager的时候能够指示ViewPager所在的位置,就像Google Play中切换的效果一样,还能使用在应用初始化的介绍页面</item> ...

  4. JavaScript中的定时事件

    这两个函数都是在给定的时间之后开始执行的,并不是立即执行. var timeId = window.setTimeout("method()",1000); //定时执行,还可以这 ...

  5. Python常用模块—— Colorama模块

    简介 Python的Colorama模块,可以跨多终端,显示字体不同的颜色和背景,只需要导入colorama模块即可,不用再每次都像linux一样指定颜色. 1. 安装colorama模块 pip i ...

  6. C# Command命令(行为型模式)+队列 实现事务,带异步命令重试机制和生命周期

    一.简介 耦合是软件不能抵御变变化的根本性原因,不仅实体对象与实体对象之间有耦合关系(如创建性设计模式存在的原因),对象和行为之间也存在耦合关系. 二.实战 1.常规开发中,我们经常会在控制器中或者M ...

  7. tcp 三次握手 四次挥手

    TCP协议中的三次握手和四次挥手 建立TCP需要三次握手才能建立,而断开连接则需要四次挥手. 三次握手,建立连接 首先Client发送连接请求报文,Server端接收连接后回复ACK报文,并为这次连接 ...

  8. 博客维护停止,需要的伙伴们移步http://blog.csdn.net/panhouye

    两个博客的维护着实费心,方便大家共同学习.督促.进步.感兴趣的伙伴们移步CSDN博客:http://blog.csdn.net/panhouye,博客目录如下: 1.Android中通过实现线程更新P ...

  9. MySQL 解压缩版安装 2017-12-02(完整版,包括异常处理)

    一.安装 1.到mysql官网 http://dev.mysql.com/downloads/mysql/ 下载mysql 注:msi的是安装版     zip是压缩版 2.解压 解压到想安装的目录下 ...

  10. 利用Redis发布订阅完成tomcat集群下的消息通知

    以下为个人想法,如果有说的不对的地方请各位大佬见谅! 这是博主的第一篇博客,可能排版以及一些描述有不合理的地方还请勿喷,希望大家尽可能的多给我这样的新人一些鼓励让我能在写博客的道路上走下去. 进入正题 ...