JavaScript 数组方法 笔记

JavaScript 数组创建

一维数组

var arr = []   // 空数组
var arr = [1,2,3,4]  // 数组字面量

var arr = new Array()   // 空数组
arr[0] = 1
arr[1] = 2

var arr = new Array(20) //创建一个有20个空间大小的数组 
var arr = new Array(1,2,3,4) //创建数组,包含四个元素

二维数组

var arr = new Array()
arr[0] = [1,2,3]
arr[1] = [3,2,1]
// 一般多维数组会用循环(比如for)来构建

数组方法

arr = [1,2,3,4,5]

arr.join(separator)——连接
返回以separator为间隔的字符串,原数组不变

arr.join("-")   //返回值1-2-3-4-5

arr.push(item,[items])——末尾添加
可输入多个元素 ,修改数组本身,返回 修改后数组长度

arr.push(4,3,2,1)   //返回9

arr.pop()——删除末尾元素
无参数,返回被删除元素,数组长度改变

arr.pop() // 返回 5

arr.shift()——删除第一个元素
返回被删除元素,数组长度改变

arr.shift()  // 返回1

arr.unshift(item,[items])——数组首位添加元素
可添加多个元素,返回增加后的数组长度

arr.unshift(-1,0)  // 返回7

arr.reverse()——反转数组
返回被反转顺序的数组,原数组改变

arr.reverse()  //返回[ 5, 4, 3, 2, 1 ]

arr.concat(items,[items])——连接元素
参数任意,无参数时返回原数组副本,否则将参数添加进数组副本末尾并返回该副本,原数组不变
注意:若参数有数组,一位数组将被划分为独立的项再进行添加,二维数组的情况只有第一层数组会被拆分,第二层数组以数组的形式被添加

arr.concat()  //返回[ 5, 4, 3, 2, 1 ]
arr.contact("last",["add","and",[11,11,11]])  
//返回   [ 1, 2, 3, 4, 5, 'last', 'add', 'and', [ 11, 11, 11] ]

arr.sort([compareFunction])——排序
无参数时默认升序排序,添加compareFunction比较函数,函数中将两个值进行比较,第一个值位置在前时返回负数,相等返回0,靠后返回正数。

降序(示例)
function compareFunction(value1,value2){
  if(value1 > value2) return -1
  if(value1 < value2) return 1
  if(value1 == value2) return 0
}
arr.sort(compareFunction)  //返回[ 5, 4, 3, 2, 1 ]

arr.slice(startIndex,endIndex)——截取数组
截取开始下标和结束下标包含的项,不包括结束下标的项,省略结束下标参数时默认截取到最后一个字符串
结束下标为负时,设结束下标为-1,则截取的最后一个数的位置是倒数第2个(2 = |-1|+1)

arr.slice(1)     //返回[ 2, 3, 4, 5 ]
arr.slice(1,4)     //返回[ 2, 3, 4 ]
arr.slice(1,-1) //返回[ 2, 3, 4 ]

arr.splice()——切片——删除、插入、替换
始终返回被删除的项
删除——arr.splice(stratIndex,length) 删除从下标为startIndex开始的length个项

arr.splice(0,2) //删除前两项  返回[ 1, 2 ]

插入——arr.splice(start,0,[items])——在start处添加【items】,删除0项

arr.splice(1,0,-1,-1) //在第二位添加两个项,-1,返回[]

替换——在被删除的地方插入新值就可以了arr.splice(start,length,[items])

arr.splice(0,2,-1,-1)  //

arr.indexOf(item,start) arr.lastIndexOf(item,start)——查找
输入要查找的项和开始查找的起点位置索引【可选】,首次匹配成功返回匹配项索引并结束匹配,否则返回-1

arr.indexOf(5)  //返回4

数组遍历

forEach
arr.forEach(function(item,index,arrSelf){})
无返回值,原数组不变
给定匿名遍历函数,包含三个参数——每一次遍历的数组项,该项的索引,数组本身

arr.forEach(function(item,index,arrSelf){
console.log("index:"+index+"  value:"+item)
})
输出:
index:0  value:1
index:1  value:2
index:2  value:3
index:3  value:4
index:4  value:5

map
arr.map(function(item,index){return})**——映射
遍历数组每一项,每一次返回值组成新的数组,原数组不变

arr.map(function(item,index){
  console.log("index="+index+"__"+"item="+item)
  return item-1
})    
输出
index=0__item=1
index=1__item=2
index=2__item=3
index=3__item=4
index=4__item=5
[ 0, 1, 2, 3, 4 ]

filter
arr.filter(function(item,index){reutn ture/false})——过滤
返回满足过滤条件组成的数组,原数组不变

arr.filter(function(item,index){
    return item>2
})
返回[3,4,5]

every()
arr.every(function(item,index){return true/false}):判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。

arr.every(function(item,index){
console.log("index="+index+"__"+"item="+item)
return item>2
})
返回
index=0__item=1
false

some
arr.some(function(item,index){return false/true})
判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。

arr.some(function(item,index){
console.log("index="+index+"__"+"item="+item)
return item>1
})
返回
index=0__item=1
index=1__item=2
true

归并
reduce()和 reduceRight()
给定一个函数和一个归并基础值,每一次返回的值作为下一次的prevSub

var sum = arr.reduceRight(function(prevSum, cur, index, array){
return prevSum * cur;
},10);
console.log(sum); //1200

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

推荐阅读更多精彩内容

  • 由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaS...
    2bc5f46e925b阅读 1,972评论 0 16
  • 数组方法 下面开始介绍数组的方法,数组的方法有数组原型方法,也有从object对象继承来的方法,这里我们只介绍数组...
    祈求者阅读 370评论 0 2
  • JavaScript中创建数组有两种方式,第一种是使用 Array 构造函数: vararr1 = newArra...
    寄鱼予海与你阅读 516评论 0 0
  • 数组的定义 数组是按序号排列的一组值,每个值的位置都有编号(从0开始)。数组本质上是一种特殊的对象。它的键名是按(...
    Allin_Lin阅读 549评论 0 0
  • 从行业小白到区块链布道者的自我认知修行之路 以下故事纯属真实经历,一个与比特币“三来三往”经历过牛熊、期货爆过仓的...
    简居庙堂阅读 2,048评论 0 8