前端零基础 JS 教学 第七天 07 - 数组方法 ,数组去重,截取url网页地址

Array 对象

创建数组对象的两种方式
字面量方式
new Array();
字面量方式
var arr = []
arr[0] = 10; //追加进去

<!--这里使用new Array的方式-->
var arr = new Array();
console.log(arr);  //空数组

var arr = new Array(3);//数组是undefined的空的 里面的长度为3 
console.log(arr);

var arr = new Array(1,2,3,4);//里面包含1,2,3,4 四个元素 
console.log(arr);
复制代码

检测一个对象是否是数组

instanceof

var  arr = [1,2,3]; // 数组 
var o = {}  //对象 
console.log(arr instanceof Array); true
console.log(o  instanceof Array);  false

isArray 是html5 新增的方法 

var arr = [1,2,3,4];
var o = {}
console.log(Array.isArray(arr)); true
console.log(Array.isArray(o));   false
复制代码

数组常见方法

var str = '1,2,3,4,5';
console.log(str.split(','));  //把字符串转换为数组 

var arr = [1,2,3,4,5];
console.log(arr.toString()); //把数组转换成字符串 
复制代码

数组添加删除方法

		数组方法
方法名 		   说明								返回值
push() 		修改原数组,末尾添加一个或多个元素 		并返回新的长度
pop()      删除数组的最后一个元素把数组长度减1无参数    返回它删除的元的值
unshift()   向数组的开头添加一个或多个元素 			  并返回新的长度
shift()     把数组的第一个元素从其中删除,把数组长度减1 无参数    并返回第一个元素的值

    push() 后面追加
var arr = ['red','green'];
arr.push('pink');  //给arr 末尾添加一个 pink
console.log(arr); //这里修改原数组 打印出 'red','green','pink'

    pop() 后面删除不需要给参数记住
var arr = ['red','green'];
var newPop = arr.pop(); //从后面删除,修改原数组
console.log(newPop); //返回删除的元素green
console.log(arr); //删除后的数组 red 
    
    unshift 在前面进行追加 
var arr = ['red','green'];
arr.unshift('blue'); //像数组的开头添加
console.log(arr.unshift('blue'));//返回新数组的长度 3
console.log(arr); //返回一个新的数组
	
    shift 在前面删除
var arr = ['red','green'];
arr.shift(); //一次只删除1个 不跟参数
console.log(arr)//green
复制代码

反转数组和排序

    reverse() 修改原数组 无参数 
    
var arr = ['pink','blue','red'];
a = arr.reverse() //反转数组修改原数组,无参数 
console.log(arr);

	sort() 修改原数组 无参数 
	 只能排列个位 数字  如果 var arr = [11,23,32,,24,21,32];这样将无法排序
	 
var arr = [2,5,6,9,1,3,4];
a = arr.sort() //sort()无参数 按照ascii 排序 只能排列个位 数字 
console.log(a);
console.log(arr.sort());


   XXX.sort(function(a,b){}) 
var arr = [11,23,32,,24,21,32];
// sort里面传的是一个函数 
arr.sort(function(a,b){
	// 里面 形参给的 是a 和b 因为好记忆 原理也是根据冒泡进行比较
	// 升序排序 
	return a - b;
	<!--这里如果降序 b - a -->
})
console.log(arr);
复制代码

清空数组的三种方法

 var arr = ['pink','red','blue','yellow','black'];
 arr = []; //清空数组给空 
 console.log(arr);


 // 第二种方法根据长度修改
 var arr = ['pink','red','blue','yellow','black'];
 arr.length = 0;
 console.log(arr);

  var arr = ['pink','red','blue','yellow','black'];
  arr.splice(0,arr.length);
  console.log(arr);
复制代码

join 方法

可以根据分隔符 把数组转为 字符串

var arr = ['red','pink','color'];
	// 把数组转为字符串,如果join 里面没有参数和toString()是一样的
	a = arr.join();
	console.log(a);
	console.log(arr.toString());

	console.log(arr.join('-')); //join里面有参数 
复制代码

迭代方法 类似于 循环 filter()过滤

filter() HTML5新增加

// arr.filter(callback[,thisArg])//回调函数

 var arr =[1000,2000,1500,2400,5000,1800];
	arr.filter(function(index,i) {
		// console.log(index); 这里打印出来的 里面的数值所有的数组元素 相当于for 循环
		// console.log(i);  是索引号
	});

// 谨记 filter 不修改原数组 所有需要新数组存储 
var newArr  = arr.filter(function(index){
	return index < 2500;
})
console.log(newArr);
复制代码

练习题1 删除超过2500的数字

var arr =[1000,2000,1500,2400,5000,1800];
var newArr =[];
for(var i=0; i<arr.length;i++){
	// 小于 2500存入新数组
	if(arr[i] <= 2500){
		// 存给新数组,追加新数组
		newArr.push(arr[i]);
	}
}

console.log(newArr);


    
    concat 合并连接数组 不修改
    xxx.concat(arr,arr2);
var  arr = ['red','yeddlow'];
var arr1 = ['blue','black'];
console.log(arr+ arr1); //这样变成字符串了
console.log(arr.concat(arr1)); // 数组相加 使用concat 链接 合并曾为一个 数组


    splice 修改原数组 

var arr = ['pink','red','blue','yellow','black'];
arr.splice(1,3); //删除1到第三个 
console.log(arr.splice(1,3)); // 返回被删除的元素 
console.log(arr);//'pink','black'
复制代码

练习题:数组去重

    编写一个方法 去掉一个数组的重复元素
    
    var arr = ['c','a','b','s','s','a','a','d','d','c'];
    // 昨天学的 首先需要一个新对象 
var o = {};
// 然后通过for 进行循环 
for(var i=0; i<arr.length; i++){

	var item = arr[i];

	if(o[item]){
		o[item] ++;
	}else{	
		o[item] = 1;
	}
}
console.log(o);

var newArr = [];
// 处理对象赛选元素 
// 存放我们选出来的内容元素
for(var k in o){
	// 如果数字是1 直接保存,要是大于1怎么办
	// newArr.indexOf(k) === -1 说明没找到 
	if(o[k] == 1 || newArr.indexOf(k) === -1){
		newArr.push(k);
	}
}
console.log(newArr);
复制代码

练习截取 url 网页地址

<body>
<form action="" method="get">
	用户名:<input type="text" name="userName" id="">	 <br>
	密码:<input type="text" name="password" id="">
	<input type="submit" name="" value="点击我">
</form>
</body>
下面是浏览器地址栏
复制代码

截取 url网页地址

var url = 'js.03lianxi.html?userName=xzliang&password=woxiangjingjing';

function getParames(url){
	// 思路: 我们先找到?号 indexOf('?');
	var index = url.indexOf('?')+1;
	// 下面开始截取字符串
	// console.log(index);
	var params = url.substr(index);
	// console.log(params);//这里我们会发现多了一个?号
	// 得到这个 userName=xzliang&password=woxiangjingjing

	// 第三步继续拆分 观察发现我们&隔开的 
	var arr = params.split('&');
	//得到 console.log(arr);  ["userName=xzliang", "password=woxiangjingjing"]
	var o = {} //声明一个对象 
	// 使用遍历 每一个 
	for(var i=0; i<arr.length;i++){
		var newArr = arr[i].split('=');
		// console.log(newArr);
		//  ["userName", "xzliang"],["password", "woxiangjingjing"]
		o[newArr[0]] = newArr[1];
	}
	return o;

}

console.log(getParames(url));复制代码

转载于:https://juejin.im/post/5c7ddc4551882555a82237cc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值