js数组

数组

数组是有序的元素序列,可以存储多个值

怎么理解:

​ 即一个变量 存储多个值

数组是线性的:除了第一个元素,每一个元素都有一个前驱元素,除了最后一个元素,每一个元素都有一个后驱元素

声明

语法糖:  array
	var arr = [];
    var arr=[1,2,3,4,5,6,87]; 
构造函数写法:
	var arr = new Array();
	var arr = new Array(1,2,3,4,5);

使用

如何获取数组中的元素
因为数组是线性的,所以 数组中的每一个元素,在数组中都有自己的位置 如第一个 最后一个 第二个...
位置:下标   从0开始 
获取数组中的元素 
	arr[下标]

数组length属性

获取数组的长度 (元素的个数)

数组元素的赋值

arr[下标]=值
1,原来就有  覆盖原来的值
2,原来没有  定义个一个新的位置 上定义的一个新值

注意

var arr = [1,2,3]
alert(arr[4]);
访问数组中的元素时,如果长度超出了
undefined

数组常用api

api  Application Programming Interface
应用程序接口
对象的方法
push()
	末尾添加 可以是以,隔开的多个值
pop()
	末尾删除  调用一次就删除一个
	返回值:就是删除的数组元素
unshift()
	开头添加  可以以,隔开的多个值
shift()
	开头删除
	返回值:删除的元素
总结:以上四个api都是会直接改变原数组  不是只读的

concat 连接数组  (将两个小的数组或者一个数组和其他值 拼成一个大的数组)
var newArr = arr.concat(连接的值);

reverse() 不是  颠倒数组  不是排序
	var arr=[2,5,7,8];
	arr.reverse()   [8,7,5,2]
	
sort() 排序 
	默认是按照字符串 进行排序 (首字符大小 进行排序)
	如果需要按照数字排序:需要 一个 排序规则的函数
	function compare(a,b){
		return a-b;  //升序
		return b-a;  //降序
	}
join()  将数组转换成字符串
	注意:join可以传参 ,参数是值 分隔符  ,如果不传参 默认是 ,分割
	只读的
splice() 不是只读  
功能: 删除 替换 插入
	第一个参数 : 从哪里开始删除
	第二个参数:删除几个
	后面的参数 : 插入的值
总结:如果参数只有两个  执行的是删除操作
	如果有多个参数主要看 第二个参数
		如果为0  执行的是插入
		如果不为0执行的是替换
 slice(starti[,endi+1])  只读  切割数组  得到子数组
 starti:开始截取的位置 下标
 endi:结束的位置
 总结:含头不含尾
 如果第二个参数省略,默认从starti开始后面全部截取
 
 总结:
 	push() pop() unshift() shift() sort()  splice() slice()	这几个要常用一点

es5新增数组相关api

indexOf(data[,starti]) 查找关键字

第一个参数:需要查找的关键字

第二个参数:从哪里开始查找,默认是开始位置查找

顺序从前往后

不能全局查找,遇到第一个复合条件的元素就立即返回

var arr=[1,2,3,4,5,7,8,98,9,0,0,'tmd',0,7];

lastIndexOf(data)

找到了返回结果所在的下标,找不到返回-1

顺序:从后往前找

不能全局查找,遇到第一个复合条件的元素就立即返回

forEach()循环

arr.forEach(function(item,index,arr){
	//item每一次遍历的数组的元素
	//index是下标   arr是数组本身
});

forEach能否取代普通for循环

遍历过程中,因为某些条件要终止循环
var arr=[1,2,0,4,8,32,5,35,6];
for(var i=0;i<arr.length;i++){
	if(arr[i]==0){
		break;
	}
}

map() 遍历当前数组,返回新数组

var arr=[1,2,3,4,5];
//[2,4,6,8,10]
var newArr = arr.map(function(item,index){
	return item+2;
});
console.log(newArr);

filter 过滤 得到复合条件新数组

var newArr = arr.filter(function(item,index){
	return 条件;
});

every() 条件判断,判断数组中的每一个元素是不是都满足某个条件,如果都满足返回true,否则返回false

var bool =arr.every(function(item,index){
	return 条件
});

some()条件判断,判断数组中的某一个元素是不是都满足某个条件,如果都满足返回true,否则返回false

var bool =arr.every(function(item,index){
	return 条件
});

二维数组

数组中的每一个元素也是数组

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

怎么遍历二维数组

	var arr=[
		[1,2,3],
		[4,5,6,7],
		[10,20,30,40,60,80]
	];
	for(var r=0;r<arr.length;r++){
	
		for(var c=0;c<arr[r].length;c++){
			console.log(arr[r][c]);
		}
	}

怎么访问二维数组中的元素
arr[r][c]


思考问题
var arr=[
	[1,2,3],
	[5,6],
	[7]
];
arr[0][5]  //undefined
arr[5][1] //报错
二维数组:列下标 可以超出 行下标不可以

var obj={
	name:"小明"
}
var a="name";
obj[a]

hash数组(关联数组)

普通数组下标:0123456789
概念:自定义下标的数组
声明:
	var hashArr = [];
	hashArr['a']='tom';
	hashArr['b']='jerry';
	hashArr['c']='tony';
使用:
	hashArr['a']
	
对象其实就是关联数组
对象的严格写法:属性名必须加 "" 双引号,对象的属性名方法名其实是字符串
注意:
	关联数组的length属性是无效的

json

js对象表示法  json 不是js语法,语言通用(模仿js对象的写法 储存数据格式)
数据格式 用于传输数据的(前后台)
json是js对象的严格语法:
	键和值得一一对应关系
	属性名(键)是需要加 ""
var json={
	"name":"小明",
	"age":18,
	"gender":"男"
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值