js数组及数组常用方法:push,pop,shift,unshift,sort,reverse,splice,concat,join和字符串部分和数组配合使用的方法

//数组:
// 1.new Array(length/content);
var arr1 = new Array(1.2, 4, 6, 8, 9);
var arr3 = new Array(10);//长度为10;如果只有一位数值,就会识别为长度,不能是小数。
// 2.字面量
var arr2 = [1,1];//稀松数组
//pic
在这里插入图片描述

//数组的一切方法来源于Array.prototype 写的时候可以简便写[].slice()等方法

// 数组的读和写:
// arr[num]//不可以溢出读(数值是一种特殊的对象);结果是undefined

// pic
在这里插入图片描述

// arr[num] = xxx;//可以溢出写

// 数组常用的方法:
// ***

改变原数组:push, pop, shift, unshift, sort, reverse, splice


// ***

不改变原数组:concat, join —> split, toString, slice


//push:在数组的最后面加元素。
//pic
在这里插入图片描述

//写一个push函数:学会自己在原型链上写自己需要的方法。
在这里插入图片描述

var arr = [1, 2, 3];
Array.prototype.push = function () {
	for(var i = 0; i < arguments.length; i ++) {
		this[this.length] = arguments[i];//谁调用这个函数,this就指向谁(arr[arr.length])
	}
	return 'haha';//return this.length;
}

//pop:把数组最后一位剪切出来;不用传参
在这里插入图片描述

//unshift:在数组的前面加东西
//pic
在这里插入图片描述
//shift:在数组的前面减东西

//reverse:返回值是逆转后的数组
//pic
在这里插入图片描述

//splice:切片。splice(从第几位开始, 截取多少的长度, 在切口处添加新的数据(这个地方放多少个数据都可以))
//pic
在这里插入图片描述
//那么问题来了: 要在3和4之间添加一个5,怎么办?
//pic;这方法多用于插入
在这里插入图片描述
/

/数组方法一般参数也可以传负数,实现如下:
	splice = function (pos) {
		pos += pos > 0 ? 0 : this.length;
	}

//如果splice只传1个参数(例如5:),那么就会剪切数组的前5个数(位数从0开始数)。
//pic
在这里插入图片描述

//sort:给数组排序(升序;按Asics码排的)
//pic
在这里插入图片描述
//上面的asica码排序不能满足我们的需求,**

sort函数给我们留了一个接口,可以往sort函数里面传一个匿名函数function () {},把这个函数填充完后,就可以使sort按任何一种我们想要方式排序;这个匿名函数不用我们自己去调用,在适当的时候,系统会调用它,我们只要把函数里面的规则填充完就可以了: //规则: //1.必须写两个形参 //2.看返回值:1) 当返回值为负数时,那么前面的数放在前面 // 2) 为正数,那么后面的数在前 // 3) 为0,不动。

**
//这个函数会被执行无数次,它会先比较1,3,–> 1,5 --> 1,4 -->…3,5 -->…3,-1 --> 10,0 -->…,认位置的,不认数;比如:5,4比较后,5和4交换位置后,是用4 继续和 10比较

var arr = [1, 3, 5, 4, 10, 0, -1];
	arr.sort(function (a, b) {
		// if(a > b) {
		// 	return 1;
		// }else {
		// 	return -1;
		// }
		return a - b;//升序;return b - a;降序(冒泡排序)
	})

//pic
在这里插入图片描述

//题目:给一个有序的数组,乱序;(Math,random();产生一个(0,1)的数)

var arr = [1, 2, 3, 4, 5, 6];
arr.sort(function (a, b) {
	
	return 0.5 - Math.random();
});
console.log(arr);//打开浏览器,然后疯狂刷新

//排年龄:

var cheng = {
	name : 'cheng',
	age : 18,
	sex : 'male',
	face : 'handsome'
}
var deng = {
	name : 'deng',
	age : 45,
	sex : 'male',
	face : 'amazing'
}
var zhang = {
	name : 'zhang',
	age : 20,
	sex : 'male',
	face : 'fine'
}
var arr = [cheng, deng, zhang];
arr.sort(function (a, b) {
			return a.age - b.age;
});

在这里插入图片描述
//按字符串长度排序:

var arr = ['jks', 'hsajhduas', 'a', 'nash', 'kkkkjuijkajishjxas', 'ashidhsaidjj', 'ksjoaokasnjndjasjjbsjahj'];
	arr.sort(function (a, b) {
		return a.length - b.length;

	})

//按字节长度排:

function retBytes(str) {
		var num = str.length;
		for (var i = 0; i <str.length; i ++) {
			if(str.charCodeAt(i) > 255) {
				num ++;
			}
		}
		return num;
	}
	var arr = ['jks维', 'hsajhd潮as', 'a欧维', 'nash', 'kkkkjuijka看v很傻很愤慨i你jishjxas', 'ashid冲hsa冲idjj', 'ksjoaokasnjndjasjjbsjahj'];
		arr.sort(function (a, b) {
			return retBytes(a) - retBytes(b);
		})

//pic
在这里插入图片描述
在这里插入图片描述

//concat:连接两个数组;会把后面的数组拼接到前面数组上,并且不会改变原数组,返回的是一个新数组。
//pic
在这里插入图片描述

//toString:把数组变成字符串(数组重写)
//pic
在这里插入图片描述

//slice:slice(从该位开始截取, 截取到该位(默认是最后一位))
//pic:两个参数的情况
在这里插入图片描述
//pic:一个参数的情况:从第几位开始截取,截取到最后;没有参数:截取全部(把一个类数组转换成数组就会用到)
在这里插入图片描述

/**/join:join()里面传参数必须是字符串的,空串也可以;*

不传参数就会默认按逗号连接

。会把数组的每一位给你连接起来,连接成串,返回字符串。*
//pic
在这里插入图片描述

//和join可逆的一个方法split:split是String字符串的方法;该方法是字符串按照什么拆分成数组,返回数组
//pic
在这里插入图片描述

//join应用:把下面字符串拼接到一起,假如有100个字符串
	var str = 'alibaba';
	var str1 = 'baidu';
	var str2 = 'tencent';
	var str3 = 'toutiao';
	var str4 = 'wangyi';
	var str5 = 'xiaownag';
	var str6 = 'nv';
	//方法:字符串等原始值放在栈内存里面存储,是后进先出的,效率低;但是如果放在数组里面(堆内存),数组是散列结构,
	var arr = [str, str1, str2, str3, str4, str5, str6];
	console.log(arr.join(''));
	console.log(arr.join());
//pic

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值