Javascript 数组的常用方法

数组的常用方法基本上可以归纳为:增、删、改、查,需要注意的是哪些方法会对原数组会产生影响,哪些不会

  • push()
  • unshift()
  • splice()
  • concat()

push()

push() 方法接收任意的参数,并将它们添加到数组的末尾,返回数组的最新长度

const arr = []
const ret = arr.push('item1', 'item2')
console.log(ret) // 2
console.log(arr) // ['item1', 'item2']

unshfit()

unshift()方法接收任意的参数,并将它们添加的数组的首位,返回数组的最新长度

const arr = ['item1', 'item2']
const ret = arr.unshift('itemA', 'itemB')
console.log(ret) // 4
console.log(arr) // ['itemA', 'itemB','item1', 'item2']

splice()

传入三个参数,分别是开始位置(startIndex),要删除的元素数量(deleteNum)、插入的元素。返回值为空数组

const colors = ['red', 'blue', 'yellow']
const ret = colors.splice(1, 0, 'green', 'origin')
console.log(ret) // []
console.log(colors) // [ 'red', 'green', 'origin', 'blue', 'yellow' ]

concat()

首先它会先创建一个当前数组的副本, 然后把它的参数添加到副本的末尾,最后返回这个新构建的数组,不会影响原数据

const colors = ['red', 'yellow', 'blue']
const colorsNew = colors.concat('black', ['origin', 'green', ['greenyellow']])
console.log(colors) // [ 'red', 'yellow', 'blue' ]
console.log(colorsNew) // [ 'red', 'yellow', 'blue', 'black', 'origin', 'green', ['greenyellow']]

  • pop()
  • shift()
  • splice()
  • slice()

pop()

pop()方法用于删除数组的最后一个元素,同时减少数组的length值,返回被删除的元素

const colors = ['red', 'blue', 'yellow']
const color = color.pop()
console.log(colors)  // [ 'red', 'blue' ]
console.log(color)  // yellow

shift()

shift()方法用于删除数组的第一个元素,同时减少数组的length值,返回被删除的元素

const colors = ['red', 'blue', 'yellow']
const color = color.pop()
console.log(colors)  // [ 'blue', 'yellow' ]
console.log(color)  // red

splice()

splice传入两个参数,分别是开始位置,删除元素的数量,返回被删除元素的数组

const colors = ['red', 'blue', 'yellow']
const color = colors.splice(0,2)
console.log(colors); // [ 'yellow' ]
console.log(color); // [ 'red', 'blue' ]

slice()

slice() 创建一个包含原有数据的新数组,接收两个参数,分别是开始位置和结束位置,不会影响原有数组

const colors = ['red', 'blue', 'yellow', 'green', 'black', 'white']
const colors1 = colors.slice(1);
const colors2 = colors.slice(1, 4);
console.log(colors); // [ 'red', 'blue', 'yellow', 'green', 'black', 'white' ]
console.log(colors1); // [ 'blue', 'yellow', 'green', 'black', 'white' ]
console.log(colors2); // [ 'blue', 'yellow', 'green' ]

  • splice()

splice()

传入三个参数,分别是开始位置(startIndex),要删除的元素数量(deleteNum)、插入的元素。返回值为空数组

const colors = ['red', 'blue', 'yellow']
const ret = colors.splice(1, 0, 'green', 'origin')
console.log(ret) // []
console.log(colors) // [ 'red', 'green', 'origin', 'blue', 'yellow' ]

  • indexOf()
  • includes()
  • find()

indexOf()

indexOf() 返回查找元素在数组中的位置,不在返回-1

const nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
const index = nums.indexOf(3)
const notFind = nums.indexOf(9)
console.log(index) // 3
console.log(notFind) // -1

includes()

返回查找的元素是否存在数组中,存在返回Boolean

const nums = [0, 1, 2, 3, 4, 5, 6, 7, 8]
const index = nums.includes(3)
const notFind = nums.includes(9)
console.log(index) // true
console.log(notFind) // false

find 返回第一个匹配的元素

const peopels = [
  {
    age: 22,
    name: 'Nick',
  },
  {
    age: 23,
    name: 'Bob'
  },
  {
    age:21,
    name: 'Tom'
  }
]
const ret = peopels.find((element, index, array) => element.age < 25)
console.log(ret);  // { age: 22, name: 'Nick' }

排序方法

数组有两种方法对数组重新排序:

  • reverse()
  • sort()
    reverse()顾名思义,将数组元素反向排列
const val = [1, 3, 2, 4, 9, 6]
val.reverse()
console.log(val) // [ 6, 9, 4, 2, 3, 1 ]

sort()接收一个比较函数,用于判断哪个元素应该排在前面

function compare(v1, v2) {
  if(v1 < v2) {
    return -1
  } else if(v1 > v2) {
    return 1
  } else {
    return 0
  }
}
const values = [1, 3, 2, 4, 9, 6]
values.sort(compare);
console.log(values); // [ 1, 2, 3, 4, 6, 9 ]

转换方法

常见的转换方法有:

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

推荐阅读更多精彩内容