前端js数组基础

一、定义数组

(1)var arr = [ ]

在里面放入一个数字5,会建立一个含有元素5的数组

(2)var arr = new Array( )

在里面放入一个数字5,会建立一个含有5个空元素的数组

二、基本操作

访问:arr[i]

修改:arr[i] = value

添加:arr = value

数组长度:arr.length

注意:长度可以获取,也可以修改

遍历数组:

for(var i = 0;i<arr.length;i++){

console.log(arr[i])

}

注意:数组中第一个元素的下标永远是0

三、排序方法

(1)冒泡排序:比较相邻两个元素的大小,并按规则排列

for(var i = 0;i < arr.length-1;i++){

for(var j = 0;j < arr.length-1;j++){

if(arr[j] > arr[j+1]){

var a = arr[j];

arr[j] = arr[j+1];

arr[j+1] = a;

}

}

}

 

 

 

(2)选择排序:每一轮排序都找一个最大值或者最小值,然后按规则将它们排列在合适的位置上

for(var i = 0;i < arr.length-1;i++){

for(var j = 1;j < arr.length;j++){

if(arr[i] > arr[j]){

var a = arr[i];

arr[i] = arr[j]

arr[j] = a;

}

}

}

四、数组方法

(1)unshift:在数组开头添加一个或多个元素--返回值为数组的长度

var arr = ['a','b','c'];

var l = arr.unshift('d')

console.log(arr) // ['d','a','b','c']

console.log(l) // 4

(2)shift:删除数组中的第一个元素--返回值为被删掉的元素

var arr = ['a','b','c'];

var ele = arr.shift()

 

 

(3)push:在数组结尾添加一个或多个元素--返回值为数组的长度

var arr = ['a','b','c'];

var l = arr.push('d')

console.log(arr) // ['a','b','c','d']

console.log(l) // 4

(4)pop:删除数组中的最后一个元素--返回值为被删掉的元素

var arr = ['a','b','c'];

var ele = arr.pop()

console.log(arr) // ['a','b']

console.log(ele) // 'c'

(5)splice:对数组进行增、删、改的操作

var arr = ['a','b','c'];

//增

arr.splice(1,0,'d')//['a','d','b','c']

//在下标为1的位置,删除0个元素,增加元素‘d’

 

//删

arr.splice(1,1)// ['a','c']

//在下标为1的位置,删除1个元素

 

//改

arr.splice(1,1,'d')// ['a','d','c']

//在下标为1的位置,删除1个元素,再把元素‘d’放在这个位置上

(6)concat:数组之间的拼接

var arr = ['a','b','c']

var brr = ['d','e','f']

//将arr和brr合并成一个更大的数组

var crr = arr.concat(brr)// ['a','b','c','d','e','f']

//或将一个和多个值与数组进行合并成一个更大的数组

var crr = arr.concat(1,2,3)//['a','b','c',1,2,3]

(7)sort:数组的排序

var arr = [9,5,3,7,1,6,4,8,2]

arr.sort()//默认排序

console.log(arr)//[1,2,3,4,5,6,7,8,9]

arr.sort(function(a,b){// a代表前面的数,b代表后面的数

return a-b;//升序

return b-a;// 降序

})

(8)reverse:数组的反转

var arr = ['a','b','c']

arr.reverse()

console.log(arr)//['c','b','a']

(9)join:将元素用指定的连接符连在一起,组成一个字符串

var arr = ['a','b','c']

var str = arr.join('_')//用连接符链接元素

console.log(str)//a_b_c

 

var str = arr.join( )//默认情况下是使用逗号连接元素

console.log(str)//a,b,c

 

var str = arr.join('')//直接连接元素,中间没有其他内容

console.log(str)//abc

(10)slice:截取数组

var arr = ['a','b','c','d','e','f'];

// 将数组中的 'b','c','d'截取出来,组成新的数组

var brr = arr.slice(1,4)

//从下标为1的元素开始截取,到下标为4的元素停止(截取原则:左闭右开)

console.log(brr)// ['b','c','d']

//但是如果没有声明截取到那个元素停止的话,就会默认截取到元素的末尾

var crr = arr.slice(1)

console.log(crr)//['b','c','d','e','f']

ES5新增数组方法

(1)indexOf:数组元素查询方法--返回值为所找到元素的下标;如果没有找到,就返回-1

lsatIndexOf:从后向前查找

语法:arr.indexOf(元素,查找的起始下标)

var arr = [1,3,5,7,7,5,3,1];

console.log(arr.indexOf(5)); // 2 - 查找数字5在数组中第一次出现的下标

console.log(arr.lastIndexOf(5)); // 5 - 查找数字5在数组中最后一次出现的位置

console.log(arr.indexOf(5,3)); // 5 - 从下标2开始查找数字5在数组中第一次出现的位置

console.log(arr.lastIndexOf(5,4)); // 2 - 从下标4开始查找数字5在数组中最后一次出现的下标

console.log(arr.indexOf("5")); // -1 - 数组中全是数字,找不到字符串5,所以返回-1

(2)forEach:遍历数组方法

语法:arr.forEach(function(值,下标,当前数组){代码段});

一般用法:arr.forEach(function(值){代码段});

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

arr.forEach(function(x, index, a){

console.log(x + '|' + index + '|' + (a === arr));

});

// 输出为:

// 1|0|true

// 2|1|true

// 3|2|true

// 4|3|true

// 5|4|true

(3)map:遍历数组,处理其中的每个元素,将其组成新的数组并返回

语法:var brr = arr.map(function(值){return 新的元素})

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

var brr = arr.map(function(item){

return item*item;

});

console.log(brr); //[1, 4, 9, 16, 25]

(4)filter:提取数组中满足条件的值,组成新数组并返回

语法:arr.filter(function(值, 下标, 当前数组){return 筛选条件});

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var arr2 = arr.filter(function(v, index) {

return v>5

});

console.log(arr2); //[6, 7, 8, 9, 10]

五、元素类型

基本类型:①在定义的时候,将值储存在栈中

②赋值时,将值复制一份放在另一个变量空间中

③做全等比较时,先比较数据类型,再比较值

 

引用类型:①在定义的时候,将值储存在堆中,将地址存在栈中

②赋值时,将栈中存的地址复制一份放在另一个变量空间中

③做全等比较时,是比较在栈中存的地址是否相同

 

基本类型有:number 、string 、boolean 、undefined 、null

引用类型有:{对象} 、[数组] 、function

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值