js数组Array方法

创建数组

var arr = new Array()
var arr = []

arr.length---

title: js正则表达式
categories:

  • javascript
    date: 2016-11-21 12:26:38
    tags: javascript

array.length

返回一个数组的长度

可以通过减小 length 属性的值来截短一个数组,但不能通过增大 length 属性的值来延长这个数组,也就是说,如果你将一个拥有两个元素的数组的 length 属性设置为 3,那么这个数组仍然只包含两个元素,最后一个元素不存在。因此, length属性不能真正表示数组中定义的值的数目。

arr.indexOf()

arr.indexOf(searchElement[, fromIndex = 0])
  • 参数
    • searchElement
      • 要查找的元素
    • fromIndex
      *开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回-1。如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找 ,以此类推。 注意:如果参数中提供的索引值是一个负值,仍然从前向后查询数组。如果抵消后的索引值仍小于0,则整个数组都将会被查询。其默认值为0.
  • 返回值
    • 首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1

arr.forEach()

array.forEach(callback[, thisArg])
  • 参数
    • callback
      • 函数为每个元素执行,接收三个参数:
    • currentValue(当前值)
      • 数组中正在处理的当前元素。
    • index(索引)
      • 数组中正在处理的当前元素的索引。
    • array
      • 正在应用forEach()数组。。
    • thisArg可选
      • 可选参数。当执行回调 函数时用作this的值(参考对象)。
  • 描述
    • forEach 方法按升序为数组中含有效值的每一项执行一次callback 函数,那些已删除(使用delete方法等情况)或者从未赋值的项将被跳过(但不包括那些值为 undefined 的项)。
    • callback 函数会被依次传入三个参数:
      • 数组当前项的值
      • 数组当前项的索引
      • 数组对象本身
    • 如果给forEach传递了thisArg 参数,它将作为 callback 函数的执行上下文,类似执行如下函数callback.call(thisArg, element, index, array)。如果 thisArg 值为 undefined 或 null,函数的 this 值取决于当前执行环境是否为严格模式(严格模式下为 undefined,非严格模式下为全局对象)。

forEach 遍历的范围在第一次调用 callback 前就会确定。调用forEach 后添加到数组中的项不会被 callback 访问到。如果已经存在的值被改变,则传递给 callback 的值是 forEach 遍历到他们那一刻的值。已删除的项不会被遍历到。

arr.reverse()

arr.reverse()
  • 描述
    • reverse 方法颠倒数组中元素的位置,并返回该数组的引用。
    • 修改原数组

arr.sort()

arr.sort([compareFunction])
  • 参数
    • compareFunction
      • 可选。用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的诸个字符的Unicode位点进行排序。

如果指明了 compareFunction ,那么数组会按照调用该函数的返回值排序。记 a 和 b 是两个将要被比较的元素:

  • 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
  • 如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
  • 如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
  • compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。

arr.push()

arr.push(element1, ..., elementN)

添加一个或多个元素到数组的末尾,并返回数组新的长度(length 属性值)。

  • 参数
    • elementN
      • 被添加到数组末尾的元素。
  • 返回值
    • 当调用该方法时,新的 length 属性值将被返回。
  • 描述
    • push 方法把值添加到数组中。

push 方法有意具有通用性。该方法和 call() 或 apply() 一起使用时,可应用在类似数组的对象上。push 方法根据 length 属性来决定从哪里开始插入给定的值。如果 length 不能被转成一个数值,则插入的元素索引为 0,包括 length 不存在时。当 length 不存在时,将会创建它。

arr.unshift()

arr.unshift(element1, ..., elementN)

法在数组的开头添加一个或者多个元素,并返回数组新的 length 值。

  • 参数

    • elementN
      • 被添加到数组开头的元素。
  • 返回值

    • 当调用该方法时,新的 length 属性值将被返回。
  • 描述

    • unshift 方法会在调用它的类数组(array-like)对象的开始位置插入给定的参数。

unshift 特意被设计成具有通用性;这个方法能够通过 call 或 apply 方法作用于类似数组的对象上。不过对于没有 length 属性(代表从0开始的一系列连续的数字属性的最后一个)的对象,调用该方法可能没有任何意义。

arr.shift()

arr.shift

删除数组的第一个元素并返回

  • 描述
    • shift 方法移除索引为 0 的元素(即第一个元素),并返回被移除的元素,其他元素的索引值随之减 1。如果 length 属性的值为 0 (长度为 0),则返回 undefined。

    • shift 方法并不局限于数组:该方法亦可通过 call 或 apply 作用于对象上。对于不包含 length 属性的对象,将添加一个值为 0 的 length 属性。

arr.pop()

array.pop()

删除数组的最后一个元素并返回

  • 描述
    • pop 方法删除一个数组中的最后一个元素,并且把这个删除掉的元素返回给调用者。

    • pop 被有意设计成具有通用性,该方法可以通过 call 或 apply 方法应用于一个类数组(array-like)对象上。

arr.splice()

array.splice(start, deleteCount[, item1[, item2[, ...]]])
  • 参数

    • start​
      • 从数组的哪一位开始修改内容。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位。
    • deleteCount
      • 整数,表示要移除的数组元素的个数。如果 deleteCount 是 0,则不移除元素。这种情况下,至少应添加一个新元素。如果 deleteCount 大于start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。
    • itemN
      • 要添加进数组的元素。如果不指定,则 splice() 只删除数组元素。
  • 返回值

    • 由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
  • 描述

    • 如果添加进数组的元素个数不等于被删除的元素个数,数组的长度会发生相应的改变。

注释:请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。


arr.slice()

arr.slice(begin[,edn])
  • 参数
    • begin
      • 从该索引处开始提取原数组中的元素(从0开始)。
      • 如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2)表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
      • 如果省略 begin,则 slice 从索引 0 开始。
    • end
      • 在该索引处结束提取原数组元素(从0开始)。slice会提取原数组中索引从 begin 到 end 的所有元素(包含begin,但不包含end)
      • slice(1,4) 提取原数组中的第二个元素开始直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。
      • 如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1)表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
      • 如果 end 被省略,则slice 会一直提取到原数组末尾。
  • 返回值
    • 一个含有提取元素的新数组
  • 描述
    • slice 不修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。原数组的元素会按照下述规则拷贝:

      • 如果该元素是个对象引用 (不是实际的对象),slice 会拷贝这个对象引用到新的数组里。两个对象引用都引用了同一个对象。如果被引用的对象发生改变,则新的和原来的数组中的这个元素也会发生改变。
      • 对于字符串、数字及布尔值来说(不是 String、Number 或者 Boolean 对象),slice 会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值,将不会影响另一个数组。
    • 如果向两个数组任一中添加了新元素,则另一个不会受到影响。

arr.concat()

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
  • 参数
    • valueN
      • 需要与原数组合并的数组或非数组值。详见下文。
  • 返回值
    • 新的 Array 实例。
  • 描述
    • concat 方法将创建一个新的数组,然后将调用它的对象(this 指向的对象)中的元素以及所有参数中的数组类型的参数中的元素以及非数组类型的参数本身按照顺序放入这个新数组,并返回该数组.

    • concat 方法并不修改调用它的对象(this 指向的对象) 和参数中的各个数组本身的值,而是将他们的每个元素拷贝一份放在组合成的新数组中.原数组中的元素有两种被拷贝的方式:

      • 对象引用(非对象直接量):concat 方法会复制对象引用放到组合的新数组里,原数组和新数组中的对象引用都指向同一个实际的对象,所以,当实际的对象被修改时,两个数组也同时会被修改.
      • 字符串和数字(是原始值,而不是包装原始值的 String 和 Number 对象): concat 方法会复制字符串和数字的值放到新数组里.

arr.join()

str = arr.join([separator = ','])

join() 方法将数组中的所有元素连接成一个字符串。

  • 参数
    • separator
      • 可选,用于指定连接每个数组元素的分隔符。分隔符会被转成字符串类型;如果省略的话,默认为一个逗号。如果 seprator 是一个空字符串,那么数组中的所有元素将被直接连接。
  • 描述
    • 所有的数组元素被转换成字符串,再用一个分隔符将这些字符串连接起来。如果元素是undefined 或者null, 则会转化成空字符串。

arr.map()

array.map(callback[, thisArg])
  • 参数

    • callback
      • 原数组中的元素经过该方法后返回一个新的元素。
      • currentValue
        • callback 的第一个参数,数组中当前被传递的元素。
      • index
        • callback 的第二个参数,数组中当前被传递的元素的索引。
      • array
        • callback 的第三个参数,调用 map 方法的数组。
    • thisArg
      • 执行 callback 函数时 this 指向的对象。
  • 返回值

    • 由回调函数的返回值组成的新数组。
  • 描述

    • map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值(包括 undefined)组合起来形成一个新数组。 callback 函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete 删除的索引则不会被调用。

    • callback 函数会被自动传入三个参数:数组元素,元素索引,原数组本身。

    • 如果 thisArg 参数有值,则每次 callback 函数被调用的时候,this 都会指向 thisArg 参数上的这个对象。如果省略了 thisArg 参数,或者赋值为 null 或 undefined,则 this 指向全局对象 。

    • map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)。

    • 使用 map 方法处理数组时,数组元素的范围是在 callback 方法第一次调用之前就已经确定了。在 map 方法执行的过程中:原数组中新增加的元素将不会被 callback 访问到;若已经存在的元素被改变或删除了,则它们的传递到 callback 的值是 map 方法遍历到它们的那一时刻的值;而被删除的元素将不会被访问到。

arr.reduce()

arr.reduce(callback,[initialValue])

接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。

  • 参数

    • callback
      • 执行数组中每个值的函数,包含四个参数
      • previousValue
        • 上一次调用回调返回的值,或者是提供的初始值(initialValue)
      • currentValue
        • 数组中当前被处理的元素
      • index
        • 当前元素在数组中的索引
      • array
        • 调用 reduce 的数组
    • initialValue
      • 作为第一次调用 callback 的第一个参数。
  • 描述

    • reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。

    • 回调函数第一次执行时,previousValue 和 currentValue 的取值有两种情况,如果 initialValue 在调用 reduce 时被提供,那么第一个 previousValue 等于 initialValue ,并且currentValue 等于数组中的第一个值;如果initialValue 未被提供,那么previousValue 等于数组中的第一个值,currentValue等于数组中的第二个值。

    • 如果数组为空并且没有提供initialValue, 会抛出TypeError 。如果数组仅有一个元素(无论位置如何)并且没有提供initialValue, 或者有提供initialValue但是数组为空,那么此唯一值将被返回并且callback不会被执行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容