JavaScript 数组方法 笔记

2018-07-11  本文已影响1人  FocusOn_

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
上一篇下一篇

猜你喜欢

热点阅读