ECMAScript相关操作方法

一、栈方法:栈是一种 LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除

1、push() 向数组末尾添加元素,返回添加后数组长度

如下面的例子所示:

var colors = new Arrwy();
var count = colors.push('yellow','orange');
console.log(count); //2

2、pop() 删除数组末尾的元素,返回删除的元素

如下面的例子所示:

var colors = ['blue','yellow','red','pink'];
var count = colors.pop();
console.log(count); //pink

二、队列方法:队列数据结构的访问规则是 FIFO(First-In-First-Out,先进先出)

3、unshift() 向数组开头添加元素,返回添加后数组长度

如下面的例子所示:

var colors = new Array();
var count = colors.unshift('red','green');
console.log(count); //2

4、shift() 删除数组开头的第一个元素,返回删除的元素

如下面的例子所示:

var colors = ['red','white','purple'];
var count = colors.shift();
console.log(count); //red

三、重排序方法

5、reverse() 反转数组的元素的顺序

如下面的例子所示:

var arr = [1,2,3,4,5,6];
arr.reverse();
console.log(arr); // (6) [6, 5, 4, 3, 2, 1]

6、sort() 数组排序,在默认情况下, 按升序排列数组项(即最小的值位于最前面,最大的值排在最后面)
为了实现排序,此方法会调用每个数组项的 toString() 转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值,sort() 方法比较的也是字符串

如下面的例子所示:

var values = [0, 1, 5, 10, 15];
values.sort();
console.log(values); // (5) [0, 1, 10, 15, 5]

所以据在下的了解按照我们常规的排序逻辑有以下两种写法:
(1)升序
如下面的例子所示:

var values = [0, 1, 5, 10, 15];
values.sort(function(a,b){ // es6的写法:values.sort((a,b)=>a-b); 
	return (a-b)
});
console.log(values); // (5) [0, 1, 5, 10, 15]

(2)降序
如下面的例子所示:

var values = [0, 1, 5, 10, 15];
values.sort(function(a,b){ // es6的写法:values.sort((a,b)=>b-a); 
	return (b-a)
}); 
console.log(values); // (5) [15, 10, 5, 1, 0]

四、操作方法

7、concat() 拼接数组,concat() 方法可以基于当前数组中的所有项创建一个新数组
如下面的例子所示:

var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow", ["black", "brown"]);
alert(colors); // red,green,blue
alert(colors2); // red,green,blue,yellow,black,brown

8、slice() 截取数组元素,此方法可以接收一到两个参数,即返回项的起始和结束位置,返回的是起始和结束位置-1(即不包括结束位置的项)之间的所有项

请注意不包括结束位置的项,不包括结束位置的项,不包括结束位置的项!!!(重要的事情说三遍)

如下面的例子所示:

var colors = ['red','blue','black','yellow','white'];
var count = colors.slice(1,3);
console.log(count); // blue,black

在只有一个参数的情况下, slice() 方法返回从该参数指定位置开始到当前数组末尾的所有项
如下面的例子所示:

var colors = ['red','blue','black','yellow']
var count = colors.slice(2);
console.log(count); // black,yellow

9、splice() 主要用途是向数组的中部插入项,但使用这种方法的方式则有如下 2种。splice() 方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)

写法:splice(删除第一项的索引值,要删除的项数,要插入的项…)

(1)删除:可以删除任意项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。 例如, splice(0,2)会删除数组中的前两项。 例如, splice(0,2) 会删除数组中的前两项。
(2)插入:可以向指定位置插入任意项,只需提供 3 个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如, splice(2,0,“red”,“green”)会从当前数组的位置 2 开始插入字符串 “red” 和 “green” 。

如下面的例子所示:

var colors = ['red','green','blue'];
var removed = colors.splice(0,1); // 删除第一项
console.log(colors); // green,blue
console.log(removed); // red

removed = colors.splice(0,0,'yellow','white'); // 从第一项开始插入两项
console.log(colors); // yellow,white,green,blue

removed = colors.splice(1, 1, "red", "purple"); // 插入两项,删除一项
console.log(colors); // yellow,red,purple,green,blue
console.log(removed); // white,返回的数组中只包含一项	

五、位置方法

10、indexOf() 从数组的开头(位置 0)开始向后查找,接受两个参数,一个是查找的项,一个是(可选的)查找起点位置的索引,返回的是找到之后的位置索引,在没找到的情况下返回-1,在比较第一个参数与数组中的每一项时,会使用全等操作符;也就是说,要求查找的项必须严格相等(就像使用==一样)
如下面的例子所示:

var numbers = [1,2,3,4,5,4,3,2,1];
var value = numbers.indexOf(4,1); //查找的值是4,开始的位置索引是1
console.log(value); // 3 返回第一个4所在的位置索引

11、lastIndexOf() 此方法则从数组的末尾开始向前查找
如下面的例子所示:

var numbers = [1,2,3,4,5,4,3,2,1];
var value = numbers.lastIndexOf(4,1); //查找的值是4,开始的位置索引是从右边开始数为1的位置
console.log(value); // 3 返回第一个4所在的位置索引

六、迭代方法

注:以下四个方法均不会改变原数组 ,item=>当前元素,index=>当前元素的位置索引,array=>当前被遍历的数组

12、every() 遍历数组,若数组中的每一项都符合条件,则返回true,否则返回false
如下面例子所示:

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){ // es6写法:numbers.every((item,index,array) => item > 2)
	return (item > 2);
});
console.log(everyResult); // false
console.log(numbers); // 1,2,3,4,5,4,3,2,1

13、some() 遍历数组,只要数组中的有一项符合条件,则返回true,否则返回false
如下面例子所示:

var numbers = [1,2,3,4,5,4,3,2,1];
var someResult = numbers.some(function(item,index,array){ // es6写法:numbers.some((item,index,array) => item > 2)
	return (item > 2);
});
console.log(someResult); // true
console.log(numbers); // 1,2,3,4,5,4,3,2,1

14、filter() 过滤数组,遍历指定数组,返回符合条件的元素
如下面例子所示:

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){ // es6写法:numbers.filter((item,index,array) => item > 2)
	return (item > 2)
})
console.log(filterResult); // 3,4,5,4,3
console.log(numbers); // 1,2,3,4,5,4,3,2,1

15、map() 遍历数组,对数组中的元素做相关操作后返回给新的数组
如下面例子所示:

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item,index,array){ // es6写法:numbers.map((item,index,array) => item * 2)
	return (item * 2)
})
console.log(mapResult ); // 2,4,6,8,10,8,6,4,2
console.log(numbers); // 1,2,3,4,5,4,3,2,1

七、归并方法

16、reduce() 函数接收 4 个参数:前一个值、当前值、项的索引和数组对象, prev=>前一项,cur=>当前项,index=>当前项位置索引,array=>当前被遍历的数组
如下面例子所示:

var values = [1,2,3,4,5];
var allSum = values.reduce(function(prev, cur, index, array){ // es6写法:values.reduce((prev, cur, index, array) => prev + cur)
	return prev + cur;
});
console.log(allSum ); // 15
console.log(values);//[1,2,3,4,5]

最近在读《JavaScript高级程序设计》(第三版),读到第五章,将相关笔记整理了一下,大家若有不同看法,请多多指教!!!
就是这版,当当当当!!!!!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值