javaScript数组

什么是数组

值得有序集合。也是一种对象。
js数组是弱数据类型的,数组中可以含有不同数据类型的元素。
数组长度:0 到2得23次幂-1

创建方式

字面量

var array = [];

构造器

//可以不用new,等价用new。
var array = new Array(); 
var array = new Array(100); //100个空元素
var array = new Array(1234,’11);//初始化数组

读写/增加/删除/遍历

读写

//读
arr[锁引]
//写
arr[锁引]=

增加

arr[arr.length] //尾部添加,返回添加的值
push//尾部,返回数组长度
unshift //头部,返回数组长度

删除

delete arr[2] //锁引2的位置会变成undefind,数组长度不变
arr.length -=1; //尾部,返回删除的值
pop() //尾部,返回被删除得元素
shift()//头部,返回被删除得元素

遍历

for循环
for … in… //输出原型,不保证顺序。 需要配合arr.hasOwnProperty(i) 判读是否是自己的元素。

二维数组/稀疏数组

二维数组:[[1,2],[3,4]]。
稀疏数组:没有0开始连续得锁引 遍历用 in 或者判断是否为undefind

数组方法

数组方法来自于Array.prototype。

join

将数组内部用字符串连接,返回字符串,不改原来数组。

var arr = [1,2,3];
arr.join("_");//"1_2_3";
///示例:
//创建空数组,空数组间用要传入得字符串填充。
function repeatString(str,n){
return new Array(n+1).join(str);
};
repeatString("a",3);
//"aaa"

reverse

数组逆序 ,变化原来得数组

arr.reverse();

sort

排序 数字 转为字符串再排序 ,变化原来得数组。

var arr = [1,2,3];
arr.sort();
//如果是负数那就是 123 ;如果是正数那就是321。
arr.sort(function(a,b){
return a-b;
});
//对象排序
arr.sort(function(a,b){
return a.age - b.age;
});

concat

合并数组,返回值获取,不改变原来数组

var arr = [1,2,3];
arr.concat(4,5)
arr.concat(4,5,[6,7]);//[1, 2, 3, 4, 5, 6, 7] //数组会被拉平
arr.concat([8,[9,10]]);//[1, 2, 3, 8, [9, 10]] //数组不会被拉平两次

slice

返回部分数组,不改变原来数组

var arr = [1,2,3];
arr.slice(1,2);//[2] 参数1:开始取得位置 参数2:结束取得位置:等于[1,2);
arr.slice(1);//[2] 参数 锁引1开始 到最后
arr.slice(1,-1);//[2]参数负数 是后面往前数 ,-1 开始

splice

指定添加或者删除
删除:返回删除数据,修改原来数组

//删除
var arr= [1,2,3,4];
arr.splice(2);//(2)?[3, 4]
arr//[1, 2];
//删除并添加:
var arr= [1,2,3,4];
arr.splice(2,1,'a','b','c');//[3] 删除了3
arr//[1, 2, "a", "b", "c", 4] 在3得位置添加 abc

forEach

遍历arr.forEach,ie9以上使用,不修改原来数组

var arr = [1,2,3,4,5];
arr.forEach(function(x,index,a){
console.log(x,index,a)
})
//参数1 是数组值 ;参数2 下标 ;参数3 数组本身
1 0 (5)?[1, 2, 3, 4, 5]
2 1 (5)?[1, 2, 3, 4, 5]
3 2 (5)?[1, 2, 3, 4, 5]
4 3 (5)?[1, 2, 3, 4, 5]
5 4 (5)?[1, 2, 3, 4, 5]

map

遍历 arr.map 不修改原来数组

var arr = [1,2,3,4,5];
arr.map(function(x){
	return x+10;
})//[11, 12, 13, 14, 15]

fillter

过滤,不修改原来数组

var arr = [1,2,3,4,5,6,7,8,9,10];
arr.filter(function(x,index){
return index % 3 === 0 || x > 8;
});//[1, 4, 7, 9, 10]

every/some

所有数组复合条件判断

arr.every(function(x){
return x<11
}) //全满足
arr.some(function(x){
return x===3
}) //存在一个元素

reduce/reduceRigth

//放回值作为x 和 下一个元素做逻辑处理
redeceRigth//(只是从右边开始) 
//两两相加,最后一个参数作为初始值
arr.reduce(function(x,y){
console.log(x,y)
	return x+y
},0);
//最大值最小值判断
arr.reduce(function(x,y){
console.log(x,y)
	return x>y?x:y;
},0);

indexOf/lastIndexOf

查询下标indexOf/lastIndexOf(右往左查找)

arr.indexOf(2,1); //查2的下标,从第二个元素开始

判断对象是否是数组

是Array构造器的方法,不能用arr的porotype上的方法

Array.isArray(arr);//true

对象和数组的区别

相同:都可以继承属性,对象不一定是数组,都可以当对象添加删除属性
不同:特殊的length 数组方法原型prototype继承下来的。

字符串和数组的区别

字符串:类数组 不可改写的数组 没有数组的方法

var str ="hello"
str.charAt(0);//"h"
Array.prototype.join.call(str,"_");//用call更改指向使用数组的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值