引用类型:Object、Array

Object:

  person.name   =>推荐,除非必须使用变量([])来表示

  person["name"]

  区别:[]可以通过变量来访问(出现关键字、保留字、导致语法错误的字符都可以通过方括号来表示)

Array:

  构造函数:

    var colors = Array(3)  =>数组length:3

    var color = Array('red')  =>数组length:1

  数组字面量:

    colors = ['red','yellow','blue']

  检测数组:

    Array.isArray()

  转换方法:

    toLocalString()

    toString()       转成字符串,用typeof弹出的是string

    valueOf()       返回的还是数组,用typeof弹出的是object

  栈方法(后进先出)和队列方法(先进先出):

    push() 进,返回值:数组的长度 

    pop()  出,数组末尾最后一项,返回值:移除的项

    unshift()  进,返回值:数组的长度

    shift()      出,数组第一项,返回值:移除的项

    后进先出:  push()    pop()

    先进先出:  push() shift()

  重排序方法:

    reverse()  反转

    sort()  排序,字符串排序,实现数值排序,需要在sort里接收函数,即:

      sort(function(a,b){

        return a-b;          从小到大

        return b-a;    从大到小

      })

    正数交换位置

  操作方法:

    concat()  连接起来

      var color = ['red']

      console.log(color.concat('yellow','blue'))    =>red,yellow,blue

    slice()   截取子串

      1个参数:当前位置到末尾

      2个参数:当前位置到结束位置(不包括结束位置)

      参数接受负数,结束位置<开始位置,返回空数组,即slice(4,3),为空数组

      var colors = ['red','yellow','blue','green','grey']

      console.log(colors.slice(1));  =>'yellow','blue','green','grey'

      console.log(colors.slice(1,3));  =>'yellow','blue'

      console.log(colors.slice(-2,-1)  =>'green',相当于slice(3,4),即length-2,length-1

    splice()  删除、替换、插入,返回值为删除的项

      删除(2个参数)

        var colors = ['red','green','blue']

        console.log(colors.splice(0,1));  =>返回值为删除的项,即'red'

        console.log(colors)  =>'green','blue'
      替换(3个参数)
        console.log(colors.splice(1,1,'yellow','purple')); =>'green'
        console.log(colors) =>'red','yellow','purple','blue'
      删除(3个参数,第2个参数为0)         console.log(colors.splice(1,0,'yellow','purple')); =>空         console.log(colors) =>'red','yellow','purple','green','blue',注:在位置1前面插入元素

  位置方法:  

    indexOf()  从前往后

    lastIndexOf()  从后往前

    没有找到返回-1,是“全等”操作

    var numbers=[1,2,3,4,5,4,3,2,1]
    console.log(numbers.indexOf(4)) =>3
    console.log(numbers.lastIndexOf(4)) =>5
    console.log(numbers.indexOf(4,4)) =>5,表示从第4位开始向后找数字‘4’
    console.log(numbers.lastIndexOf(4,4) =>3,表示从第4位开始向前找数字‘4’

  迭代方法:(IE9+)

    (里面包括函数,这个函数中有三个参数:数组项的值item、该项在数据中的位置index、数组对象本身)

    every()、some()

    查询数组中的项是否满足某个条件,区别在于:every(),传入的函数必须第一项返回true,才会返回true(and)

                         some(),传入的函数只有某一项返回true,就返回true(or)

    var numbers=[1,2,3,4,5,4,3,2,1]

    var everyResult = numbers.every(function(item,index,array)){

      return (item>2)

    }

    console.log(everyResult)=>false
    如果将every改成some,结果为true

    filter(),筛选,查询符合某些条件的所有数组项

    var filterResult = numbers.filter(function(item,index,array){

      return (item>2)
    })     console.log(filterResult) =>[3,4,5,4,3]

  map(),用来对数组项进行运算

    var mapResult = numbers.map(function(item,index,array){

      return (item*2)
    })
    console.log(mapResult) =>[2,4,6,8,10,8,6,4,2]

  forEach(),对数组中的每一项运行传入的函数,无返回值,本质上与for一样

  归并方法:

      (里面包括函数,这个函数中有四个参数:前一个值prev、当前值cur、索引项index、数组对象array)

    reduce(),从前往后

    reduceRight(),从后往前

    var values = [1,2,3,4,5]

    var sum = values.reduce(function(prev,cur,index,array){

      return prev+cur;

    })

    console.log(sum) =>15

[JS高程]引用类型(Object、Array)的更多相关文章

  1. JS 深度拷贝 Object Array

    JS 深度拷贝 Object Array function cloneObj(o) { var isArray = o instanceof Array; var isObject = o insta ...

  2. JS高程5.引用类型(3)Array类型-检测数组

    1. instanceof操作符(ECMAScript3) 对于一个网页,或者是一个全局作用域而言,使用instanceof操作符来检测数组就可以得到满意的结果. 语法:if(value instan ...

  3. JS高程5.引用类型(4)Array类型的各类方法

    一.转换方法 所有的对象都具有toLocaleString(),toString()和valueOf()方法.调用toString()方法会返回由数组中的每个值的字符串拼接而成的一个以逗号分隔的字符串 ...

  4. 再谈js对象数据结构底层实现原理-object array map set

    如果有java基础的同学,可以回顾下<再谈Java数据结构—分析底层实现与应用注意事项>:java把内存分两种:一种是栈内存,另一种是堆内存.基本类型(即int,short,long,by ...

  5. js 判断值为Array or Object的方法

    ①obj instanceof Array / Object ②Array.prototype.isPrototypeOf(obj) ③Object.prototype.toString.call(o ...

  6. Js判断参数(String,Array,Object)是否为undefined或者值为空

    在一些前端控件要提交数据到服务器端的数据验证过程中,需要判断提交的数据是否为空.如果是普通表单的字符串数据,只需要在 trim 后判断 length 即可,而这里需要的数据可以是各种不同的类型,通过 ...

  7. 《JS高程》创建对象的7种方式(完整版)

    一.理解对象 ECMA-262定义对象:无序属性的集合,其属性可以包含基本值.对象或者属性. 我们可以把 ECMAScript 的对象想象成 散列表:无非就是一组 名值对,其中值可以是数据或函数. 创 ...

  8. js之引用类型

    一.摘要: <javascript高级程序设计第三版>一书中单独有一章对js的引用类型(Object.Array.RegExp.Function:基本包装类型:Boolean.Number ...

  9. JavaScript--我发现,原来你是这样的JS(引用类型不简单,且听我娓娓道来)

    一.介绍 没错,这是第五篇,到了引用类型,这次要分成两次博文了,太多内容了,这是前篇,篇幅很长也很多代码,主要讲引用类型和常用的引用类型,代码试验过的,老铁没毛病. 坚持看坚持写,不容易不容易,希望大 ...

随机推荐

  1. 标签<a>的注意事项1

    使用a标签时,其子元素可以为其他元素,但是不能包含<a>标签,否则会造成布局改变! 因此请尽量不要在a标签里放太多子元素,可以在外层套一个div,其他子元素放在a标签同级下. 正确布局: ...

  2. 七、rdd究竟是什么

    RDD是个抽象类,定义了诸如map().reduce()等方法,但实际上继承RDD的派生类一般只要实现两个方法: def getPartitions: Array[Partition] def com ...

  3. CodeForces 645C Enduring Exodus

    枚举,三分. 首先,这$n+1$个人一定是连续的放在一起的.可以枚举每一个起点$L$,然后就是在$[L,R]$中找到一个位置$p$,使得$p4最优,因为越往两边靠,距离就越大,在中间某位置取到最优解, ...

  4. mybatis-generator 代码自动生成工具(maven方式)

    由于MyBatis属于一种半自动的ORM框架,所以主要的工作将是书写Mapping映射文件,但是由于手写映射文件很容易出错,mybatis-gennerator插件帮我们自动生成mybatis所需要的 ...

  5. 关于jquery 1.9以上多次点击checkbox无法选择的

    在jquery1.9之前,我们对于一个checkbox对象来进行重复选择或者取消, 我们可以使用这个方法$().attr('checked',checked);//选中 $().removeAttr( ...

  6. c# 读取ACCESS 数据库

    using System; using System.Collections.Generic; using System.Data.OleDb; using System.IO; using Syst ...

  7. 四位len灯流水

    #include <msp430x14x.h> //#include<intrins.h> #define uint unsigned int void delay(long ...

  8. 消息队列 RabbitMQ 与 Spring 整合使用

    一.什么是 RabbitMQ RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗.消 ...

  9. dplyr 数据操作 常用函数(5)

    继续来了解dplyr中的其他有用函数 1.sample() 目的是可以从一个数据框中,随机抽取一些行,然后组成新的数据框. sample_n(tbl, size, replace = FALSE, w ...

  10. java实现的简单词法分析器

    一个简单的词法分析器 词法分析(Lexical Analysis) 是编译的第一阶段.词法分析器的主要任务是读入源程序的输入字符.将他们组成词素,生成并输出一个词法单元序列,每个词法单元对应一个词素. ...