JS中数组方法

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>数组方法</title>
</head>
<body>
	<script>
		//---------reverse、splice都会改变原数组----slice、concat、join不会改变原数组---------//
		var arr = [0,1,2,3,4];
		var arr2 = [0,1,2,3,4];
		console.log(arr.length);         //数组的长度
		// console.log(arr.reverse());   //数组的反转,返回值:[4, 3, 2, 1, 0] 改变了原数组
		console.log(arr.slice());        //将所有的元素都剪切出来,返回值:[0, 1, 2, 3, 4] 
										 //相当于数组的复制,不改变原数组。
		console.log(arr.slice(1));       //将所传参数到最后的元素都剪切出来,返回值:[1, 2, 3, 4] 
		                                 //不改变原数组
		console.log(arr.slice(1,3));     //截取数组的开始索引和结束索引,不包括结束索引元素 [1, 2]
		console.log(arr.concat(5);       //数组的连接,返回值:[0, 1, 2, 3, 4, 5] 不改变原数组
		console.log(arr.join(""));       //数组的连接转成字符串,返回值:01234 不改变原数组
		// console.log(arr.splice(1));   //数组的删除,返回值:[1, 2, 3, 4] 改变原数组:[0]
		// console.log(arr.splice(1,3)); //数组的删除,返回值:[1, 2, 3] 改变原数组:[0, 4]
		console.log(arr.splice(1,3,1));  //数组的删除,(操作位置,删除个数,插入的元素) 
		                                 //返回值:[1, 2, 3] 改变原数组:[0, 1, 4]
		console.log(arr.indexOf(0));     //查找数组中的元素,若有返回 0;若没有返回 -1;
		console.log(arr.indexOf(4,2));   //查找数组中的元素的索引,若有返回其索引;若没有返回 -1;
										 //如果有相同元素则只返回第一个查找到的元素的索引。
		
		//---------push、pop、unshift、shift都会改变原数组---------------//
		var arr1 = new Array("a","b","c");  //构造函数创建数组
		console.log(arr1.push("d"));        //在数组的最后添加一个元素,返回值:4 
		                                    //添加元素之后数组元素的个数 
		console.log(arr1.pop());			//删除数组最后一个元素 ["a", "b", "c"]
		console.log(arr1.unshift("A"));		//在数组的前面添加一个元素,返回值:4 
		                                    //添加元素之后数组元素的个数
		console.log(arr1.shift());		    //删除数组第一个元素,返回值:A 
		console.log(arr1.sort());		    //将数组排序 

		//数组的去重 
		//方法1:
		let arr3 = [1,2,3,4,4];
		let set = new Set(arr3);
		console.log(set);

		//方法2:
		let array = Array.from(set);
		console.log(array);
		
		//方法3:
		var arr4 = [1,2,3,4,4]
		function unique(array){
			var n = [];
			for (var i = 0; i < array.length; i++) {
				if (n.indexOf(array[i])==-1) { //查找数组中的元素,若有返回 0;若没有返回 -1;
					n.push(array[i])
				} 
			}
			return n;
		}
		console.log(unique(arr4)) //[1, 2, 3, 4]
		
		//数组的去重(里面为对象)
		let person = [
		   {id: 0, name: "小明"},
		   {id: 1, name: "小张"},
		   {id: 2, name: "小李"},
		   {id: 3, name: "小孙"},
		   {id: 1, name: "小周"},
		   {id: 2, name: "小陈"},   
		];
		let obj = {};
		person = person.reduce((cur,next) => {
		  obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
		  return cur;
		},[]) //设置cur默认类型为数组,并且初始值为空的数组


		var obj = {
			name:"xiaoMing",
			sex:"nan",
			age:[1,2,3]
		}
		for(var key in obj){
			var val = obj[key]
			//console.log(typeof val) //string string object
			//console.log(val)        //xiaoMing nan [1, 2, 3]
			//console.log(key)        //name sex age
		}
	</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值