JS内置对象——数组& push()&unshift()&pop()&shift()&join()&reverse()&sort()&concat()&slice()&splice()&indexOf

ECMAScript中的数组

一、创建数组

用来存储一组数据

方法一:使用Array(数组)构造函数

语法:new Array( ) //首字母大写。

小括号( )说明:
1.预先知道数组要保存的项目数量
2.向Array构造函数中传递数组应包含的项

var colors = new Array(3);//预先知道数组中是三个数值
console.log(colors);//输出[]

输出:表示最终将存三个值
在这里插入图片描述

var nums = new Array(1,2,3,9);//将数组值直接写在()里
console.log(nums);

输出:
在这里插入图片描述

方法二:使用数组字面量表示法

由一对包含数组项的方括号[ ]表示,多个数组项之间以逗号隔开。
例1:

var cols = ["red","yellow","green"];
console.log(cols);

例2:[ ]内是不同类型

var infos = [6,'marry',true,{email:"marry@sohu.com"}];
console.log(infos);

在这里插入图片描述

二、数组元素的读写

使用方括号[ ]并提供相应的索引

说明:索引是从0开始的正整数

例:通过索引 ,9打印数组中的某个值

	var cols = ["red","yellow","green"];
	console.log(cols[1]);//读取数组中索引为1的值yellow
	console.log(cols[3]);//取不到打印undefined

例:赋予数组值

var colors = new Array(3);//表示数组中是三个数值
	colors[0] = "#f00";
	colors[1] = "#0f0";
	colors[2] = "#00f";
	console.log(colors);

打印结果:
在这里插入图片描述

三、数组长度

语法:array.length
功能:获取数组array的长度
返回值:number

说明:
1.通过设置length可以从数组的末尾移除项或向数组中添加新项。
2.把一个值放在超出当前数组大小的位置上时,会重新计算数组长度值,长度值等于最后一项索引加1。

例1:

var arr = ["a","b","c","d"];
console.log(arr.length);//4,打印4

例2:从数组末尾移除项

var arr = ["a","b","c","d"];
		arr.length = 3;
		console.log(arr);//打印结果[a,b,c],移除了d

在这里插入图片描述
例3:看索引,重新计算数组长度

var arr = ["a","b","c"];
	arr[99] = 'z';
	console.log(arr.length);//100

四、数组的遍历

var arr = ["a","b","c"];
		for (var i = 0;i<arr.length;i++) {
			console.log(arr[i]);
		}

结果:
在这里插入图片描述

五、数组栈 push()

语法:arrayObject.push(newele1,newele2,…,neweX)
功能:把它的参数顺序添加到arrayObject(数组)的尾部
返回值;把指定的值添加到数组后的新长度,number。
例:

	var colors = new Array("red","green");
	var len = colors.push("blue");
	console.log(len);//打印结果为 3

六、数组栈unshift()

语法:arrayObject.unshift(newele1,newele2,…,neweX)
功能:把它的参数添加到arrayObject的开头
返回值:把指定的值添加到数组后的新长度。

	var nums = [2,7,8,6];
	var size = nums.unshift(99,66);
	console.log(size);//打印值6
	console.log(nums);//[99,66,2,7,8,6]

在这里插入图片描述

七、数组栈pop()

语法:arrayObject.pop()
功能:删除 arrayObject的最后一个元素
返回值:被删除的那个元素

var nums = [2,7,8,6];
	var n = nums.pop();
	console.log(n);//6,最后一个元素
	console.log(nums);//[2,7,8]

在这里插入图片描述

八、数组栈shift()

语法:arrayObject.shift()
功能:删除arrayObject中的第一个元素
返回值:被删除的那个元素

	var nums = [2,7,8,6];
	var n = nums.shift();
	console.log(n);//2,被删除的第一个元素
	console.log(nums);//[7,8,6]

在这里插入图片描述

九、join()

语法:arrayObject.join(separator)
功能:用于把数组中的所有元素放入一个字符串。
返回值:字符串。string
例1:jion(),括号内说明都不添加 默认用,连接

	var nums = [2,4,5];
	var str = nums.join();
	console.log(str);//2,4,5
	console.log(typeof(str));//string

在这里插入图片描述
例2:当("-"),字符串之间用-连接

var words = ["a","b","c"];
	var wordstr = words.join("-");
	console.log(wordstr);//a-b-c

在这里插入图片描述

十、reverse()

语法:arrayObject.reverse()
功能:用于颠倒数组中元素的顺序
返回值:数组
例:

	var nums = [2,4,5];
	nums.reverse();
	console.log(nums);//[5,4,2]

在这里插入图片描述

十一、sort()

语法:arrayObject.sort(sortby)
功能:用于对数组的元素进行排序
返回值:数组

说明:
1.即使数组中的每一项都是数值,sort()方法比较的也是字符串
2.sort()方法可以接收一个比较函数作为参数
sort()排序时每次比较两个数组的项都会执行这个参数,并把两个比较的数组项作为参数传递给函数,当返回值为1的时候就交换两个数组项的顺序,否则就不交换;如果不使用参数,那么会按照字符编码(可查询字符编码表)的顺序进行比较,将数组里面的项转化为字符串进行比较。

例1:转化为string进行比较排序,例如9和12比较,9>1,9排在后面

	var nums = [9,12,19,88,75];
	nums.sort();
	console.log(nums);//[12, 19, 75, 88, 9]

例2:降序

 var nums = [9,12,19,88,75];
	 nums.sort(function(a,b){return b-a});
	 console.log(nums);//降序 [88, 75, 19, 12, 9]

升序

var nums = [9,12,19,88,75];
	nums.sort(function(a,b){return a-b});
	console.log(nums);//升序[9, 12, 19, 75, 88]

十二、concat()方法

语法:arrayObject.concat(arrayX,arrayX,…,arrayX)
功能:用于连接两个或多个数组

var arr1 = ['a','b','c'],
		arr2 = ['d','e','c'],
		arr3;
	arr3 = arr1.concat(arr2,["m",99,8]);
	console.log(arr3);//["a", "b", "c", "d", "e", "c"]

十三、slice()方法

语法:arrayObject.slice(start,end)。
功能:从已有的数组中返回选定的元素。
参数:start(必需)规定从何处开始选取,如是负数,从数组尾部开始算起;
end(可选)规定从何处结束选取,是数组片段结束处的数组下标。

说明:
1.start和end指数组中的索引值
2.截取从start到end(不包含该元素)的元素,即从start到end-1的元素。
3.如没有指定end,切分的数组包含从start到数组结束的所有元素。
4.如slice()方法的参数中有一个负数,则用数组长度加上该数来确定相应的位置。

返回值:数组。

例1:只有start

数组索引
red0
green1
blue2
yellow3
orange4
var colors = ["red","green","blue","yellow","orange"];
	var newColors = colors.slice(1);
	console.log(newColors);//["green", "blue", "yellow", "orange"]截取了索引从1到结束的数组

例2:start和end都有

var colors = ["red","green","blue","yellow","orange"];
	var newColors = colors.slice(1,3);
	console.log(newColors);//["green", "blue"]截取索引1到3的数组,不包括3

例3:start为负

var colors = ["red","green","blue","yellow","orange"];
	var newColors = colors.slice(-2,4);
	console.log(newColors);//["yellow"]截取从5-2=3索引值到第4的索引值

例4:面试题
完成以下代码段,实现b数组对a数组的拷贝,方法越多越好

var a = [1,"yes",3],
	b; 

1.数组遍历,push

 b = new Array();
	 for(var i = 0;i < a.length;i++){
	 	b.push(a[i]);
	 }
	 console.log(b);

2.concat()

 b = [].concat(a);
 console.log(b);

3.slice()

b = a.slice(0);
	console.log(b);

十四、splice()删除、插入、替换

1.splice()删除

语法:arrayObject.splice(index,count)
功能:删除从index(索引)处开始的零个或多个元素
返回值:含有被删除的元素的数组

说明:
1.index是开始删除的索引
2.count是要删除的项目数量,如果设置为0,则不会删除项目。
3.如果不设置,则删除从index开始的所有值。

例1:只有index

	var arr = ["a","b","c","d","e","f"];
	var delArr = arr.splice(2);//删cdef,索引为2的后面全删除
	console.log(arr);//["a", "b", ]
	console.log(delArr);//["c", "d","e","f"]

结果:
在这里插入图片描述
例2:index,count都有

	var arr = ["a","b","c","d","e","f"];
	var delArr = arr.splice(2,2);//删cd,删除从索引为2开始的两个元素
	console.log(arr);//["a", "b", "e", "f"]
	console.log(delArr);//["c", "d"]

结果:
在这里插入图片描述

2.splice()插入

语法:arrayObject.splice(index,0,item1,…,itemX)

参数解释
index起始位置
0要删除的项数
item1…itemX要插入的项

功能:在指定位置插入值
例1:

var arr = ["a","b","c","d","e","f"];
	var delArr = arr.splice(3,0,"m","n");//在c的后面添加m ,n
	console.log(arr);//["a", "b", "c", "m", "n", "d", "e", "f"]
	console.log(delArr);//[],返回是空数组

结果:
在这里插入图片描述

3.splice()替换

语法:arrayObject.splice(index,count,item1,…,itemX)
功能:在指定位置插入值,且同时删除任意数量的项

参数解释
index起始位置
count要删除的项数
item1…itemX要插入的项

返回值:从原始数组中删除的项(如果没有删除任何项,则返回空数组)
例:

var arr = ["a","b","c","d"];
	var replceArr = arr.splice(2,2,"m","n");//删除索引从2开始的两个数,c,d;并在索引为2的位置连续开始插入m,n
	console.log(arr);//["a","b","m","n"];
	console.log(replceArr);//["c","d"]

结果:
在这里插入图片描述

十五、indexOf()&lastIndexOf()

语法:arrayObject.indexOf(searchvalue,startIndex)
功能:从数组的开头(位置0)开始向后查找

参数解释
searchvalue必需,要查找的项
startIndex可选,起点位置的索引

返回值:number,查找的项在数组中的索引值,没有找到的情况下返回-1.
例1:一般查找

var nums = [1,7,6,5,7,9,8];
	var pos = nums.indexOf(7);//只算第一个7的索引号
	console.log(pos);//1

例2:查找数组中没有的值

var nums = [1,7,6,5,7,9,8];
	var pos = nums.indexOf(99);//查找数组中的99
	console.log(pos);//-1,因为没有返回-1

例3:index和count都存在

var nums = [1,7,6,5,7,9,8];
	var pos = nums.indexOf(7,4);//从索引为4的位置向后查找为7的值的位置
	console.log(pos);//4,第二个7的位置

结果:
在这里插入图片描述
例4:lastIndexOf()

var nums = [1,7,6,5,7,1,9,8];
	var pos = nums.lastIndexOf(1);//从末尾处开始查找
	console.log(pos);//5,后面一个1的索引值

说明:支持浏览器ie9以上;

若要低版本的浏览器也可以实现IndexOf()功能,可以封装一个方法
例如

var nums = [1,7,6,5,7,1,9,8];
	function arrayIndexOf(arr,value){
		for (var i = 0;i < arr.length;i++) {
			if (arr[i] === value) {
				return i;
			}
		}
		return -1;
	}
	var pop2 = arrayIndexOf(nums,7);
	console.log(pop2);//1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值