数组操作及方法

JavaScript中的数组是弱类型的,值可以是不同类型的元素。数组的长度是有限制的最短0,最长是2^32-1;

1.数组创建方式

①字面量创建:

var a = [0,"array",null,undefined];

字面量创建的时候,两个逗号之间代表是undefined,但是由于数组最后可以多加一个逗号,所以有:

var a = [1,,3] // [1,undefined,3]

var a = [1,2,,] // [1,2,undefined] 最后一个逗号右边没有undefined

②内置对象创建:

var b = new Array(100); // 创建了一个length为100的空数组
var b = new Array("100") // 这样创建的是长度为1的数组,元素是字符串"100"

并且new可以省略,即:

var b = Array(100); // 创建了一个length为100的空数组

也可以这样创建:

var b = Array(0,"array",null,undefined);

2.数组元素的读写

注意JavaScript中数组是动态的:

var arr = new Array();

arr[0] = 1; //添加一个元素
arr[100] = 2; //这样0-100之间全是undefined [1,undefined*99,2] // 实际上就是稀疏数组的概念

稀疏数组就是对于上面说的arr数组 1 in arr // false

length可以修改数组的长度,即可以删除元素

arr.length = 2; // [1,undefined]

3.数组的增删

①添加元素:

arr.push(2); // 在末尾添加一个元素 [1,undefined,2] 
arr[arr.length] = (3) // 等价于push [1,undefined,2,3]
arr.unshift(0) // 在头部添加一个元素 [0,1,undefined,2,3]

②删除元素:

arr.pop(); // 删除掉最后一个元素
arr.length--; // 等价于pop
arr.shift(); // 删除第一个元素
delete arr[4] // [0,1,undefined,2,undefined] 删除了第五个元素,使其变为undefined,但是仍然占位置,即长度不变length = 5

需要注意的是这样删除之后,4 in arr; // 为false,如果是用a[3] = undefined; 3 in a 就为true;

var a = Array("100",2,3,5);
delete a[3];// ["100",2,3,undefined]
console.log(a.length); // 长度仍然为4
console.log(3 in a); // 但是输出为false

4.数组的迭代

for(i in arr){
    	if(arr.hasOwnProperty(i){
    	    	console.log(arr[i]);
    	}
}

①使用一般的for循环

var a = [1,2,3,4];
for(var i = 0;i<a.length;i++) 
console.log(a[i]);

②for in 循环

for(i in a)
console.log(a[i]); //注意i是索引 
var b = 4 in a; // b为false 因为没有4这个索引

如果给Array.prototype.x = "inherited",这样for in出来的就会有"inherited",可以用

5.数组常用的方法

①join:将数组元素转化为字符串

var arr = [1,2,3];

arr.join(); // "1,2,3" 默认以","连接

arr.join("_") // "1_2_3"
//创建重复字符串的函数
function repeatString (str,n) {
	return new Array(n+1).join(str);
}	
②reverse:将数组逆序
var arr = [1,2,3];
arr.reverse(); // 函数返回的是arr数组本身
console.log(arr); [3,2,1]

③sort: 将数组排序

var arr = [13,24,51,3];
arr.sort(); // 函数返回的也是arr数组本身
console.log(arr); // [13, 24, 3, 51]将数字转化为字符串之后比较ASCII码进行排序
// 真正的大小排序方法
var arr = [13,24,51,3];
arr.sort(function(a,b){
	console.log(a,b);
	return a-b; // b-a表示从大到小排序 用到了冒泡排序法
});
console.log(arr); // [3,13,24,51]
④concat:合并数组
var arr = [1,2];
arr.concat(3,4,5); // [1,2,3,4,5] 返回的是一个新的数组
console.log(arr); // [1,2]原数组不改变
arr.concat(3,[4,5]) // [1,2,3,4,5]数组被拉平了
arr.concat( [3,[4,5]] ) // [1,2,3,[4,5]]数组只会被拉平一次
⑤slice:返回部分数组
var arr = [1,2,3,4,5]
arr.slice(1,3) // [2,3] 起始索引值,结束索引值 为左闭右开区间
arr.slice(1) // [2,3,4,5] 不写第二个表示截取到最后一位
arr.slice(1,-1) // [2,3,4]支持负数 最后一位为-1
arr.slice(-4,-3) // [2]
//slice返回的都是一个新的数组,即原数组不会发生改变









6.ES6中常用的新的数组方法








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值