数组常用方法 (ES4、ES5、ES6以及ES7)


目录


一、ES4的数组方法

join( )

是将数组内的所有元素转化为字符串并拼接在一起,最后返回生成的字符串。可以指定一个可选的字符串,来分隔数组得各个元素,默认使用 “,” 相隔

实例

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript 数组方法</h1> 

<h2>join()</h2>


<p id="demo"></p>

<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.join(" * ");
</script>

</body>
</html>

结果

Banana * Orange * Apple * Mango

sort( )

  • 目的:将数组的元素按照一定规则排序.
  • 参数:传超过1个的函数,默认取第一个函数,没参数的时候数组元素默认按照字母表顺序排序.
  • 函数参数:

1.你必须给sort()方法传递一个比较函数,所以一般传递2个参,PS:第3个默认undefined.
2. 假设第一个参数应该在前,你应该返回一个小于0的数值,否则,你应该返回一个大于0的数值,
3.假设两个值相等,函数应该返回0.
4.数组元素是从前到后 俩俩比较.

  • 是否改变原数组: 改变原来的数组.

例子

<script type="text/javascript">

var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

document.write(arr + "<br />")
document.write(arr.sort()) 

</script>

结果

George,John,Thomas,James,Adrew,Martin
Adrew,George,James,John,Martin,Thomas

reverse( )

  • 目的:将数组中的元素颠倒顺序.
  • 参数:没有参数.
  • 是否改变原数组: 改变原来的数组.

例子

<script type="text/javascript">

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr + "<br />")
document.write(arr.reverse())

</script>

结果

George,John,Thomas
Thomas,John,George

concat( )

  • 目的:像胶水一样,将参数粘合在数组后面
  • 参数:字符串或数组
  • 是否改变原数组:不改变原数组, 返回一个新的数组.

例子

<script type="text/javascript">

var a = [1,2,3];
document.write(a.concat(4,5));

</script>

结果

1,2,3,4,5

slice( )

  • 目的:返回数组的一个片段或子数组.
  • 参数:一个或者两个参数
  • 是否改变原数组: 不改变原数组, 返回一个新的数组

例子

<script type="text/javascript">

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr + "<br />")
document.write(arr.slice(1) + "<br />")
document.write(arr)

</script>

结果

George,John,Thomas
John,Thomas
George,John,Thomas

splice();

  • 目的:从数组中删除元素、插入元素、或者同时完成这俩种操作.
  • 参数:前俩个参数指定了删除,从第三个参数开始,指定拼接。
  • 是否改变原数组: 改变原来的数组.

例子

结果

push( )和pop( )

目的:向数组中插入或删除元素.
参数:push()方法不限制参数,不会扁平化数组。pop()方法不传参数.
行为:从尾部插入或删除值,push()方法返回数组长度,pop()方法返回被删除的值.
是否改变原数组: 改变原来的数组.
例子

<script type="text/javascript">

var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr + "<br />")
document.write(arr.push("James") + "<br />")
document.write(arr)

</script>

结果

George,John,Thomas
4
George,John,Thomas,James

unshift( )和shift( )

  • 目的:向数组中插入或删除元素.
  • 参数:unshift()方法不限制参数,在数组的头部,而不是改变参数的顺序。shift()方法无视参数.
  • 行为:在数据的头部操作.
  • 是否改变原数组: 改变原来的数组.

例子

<script type="text/javascript">

var arr = new Array()
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr + "<br />")
document.write(arr.unshift("William") + "<br />")
document.write(arr)

</script>

结果

George,John,Thomas
4
William,George,John,Thomas

toString( )和toLocaleString( )

  • 目的:将数组的每个方法转化为字符串,并且输出用逗号分隔的字符串列表.
  • 参数:俩个方法无视参数.
  • 是否改变原数组: 不改变原数组, 返回一个新的字符串.

两者区别

var a=1234
a.toString()  //"1234"
a.toLocaleString()  //"1,234"
//当数字为四位数时,toLocaleString()把数字按每3个用','分割。

ES5的数组方法

indexOf( )和lastIndexOf( )

  • 目的:搜索数组中具有给定值的元素。
  • 参数:第一个参数指的是需要搜索的值,返回则找到第一个元素的索引
  • lastIndexOf() 指从前往后查询. lastIndexOf() 指从后往前查询.

例子

//indexOf()与lastIndexOf()的区别
	public static void main(String[] args) {
		String name = "123456789";
		String name1 = "888888888";
		String name0 = "123456778";
		
		System.out.println(name1.indexOf("8"));//0
		System.out.println(name1.lastIndexOf("8"));//8
		
	}

结果
indexOf()是从左往右找,lastIndexOf()是从右往左找第一个。

map( )

  • 目的:将数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值.
  • 参数:一个带有return的函数(函数中的return的值将被传递给新数组).
  • 是否改变原数组: 不改变原数组,返回一个新数组。

例子

var array1 = [1,4,9,16];
const map1 = array1.map(x => x *2);
console.log(map1);

结果

> Array [2,8,18,32]

filter( )

  • 目的:将数组的每个元素传递给指定的函数,并返回一个数组.
  • 参数:一个带有return的函数.
  • 是否改变原数组: 不改变原数组,返回一个新数组,新数组是原数组的子集

例子

var ages = [32, 33, 16, 40];

function checkAdult(age) {
    return age >= 18;
}

function myFunction() {
    document.getElementById("demo").innerHTML = ages.filter(checkAdult);
}

结果

32,33,40

every( )和some( )

  • 目的:对数组元素应用指定的函数判定.
  • 参数:二者都需要一个函数.
  • 是否改变原数组: 不改变原数组,返回一个新数组。

例子

  <script>
 	//--------some------------
        var arr = [1, 2, 3, 4, 5, 6];

        console.log(arr.some(function (item, index) {
            console.log('item=' + item + ',index=' + index);
            return item > 2;
        }));
        //some的结果
        //item=1,index=0
		//item=2,index=1
		//item=3,index=2
		//true
	//-------every--------
	var arr = [ 1, 2, 3, 4, 5, 6 ]; 

	console.log( arr.every( function( item, index){ 
    console.log( 'item=' + item + ',index='+index); 
    return item > 2; 
	}));
	//every结果
	//item=1,index=0
	//false
    </script>

结果


ES6的数组方法

Array.from( )

  • 目的:将类数组对象和可遍历对象转化为数组.
  • 参数:第二个参数类似于数组中的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组.
  • 用法:const toArray = (() => Array.from ? Array.from : obj => [ ].slice.call(obj) )().

例子

console.log(Array.from('foo'));
// Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// Array [2, 4, 6]

Array.of( )

  • 目的:将一组值转化为数组.
  • 参数:无或无限(无时返回一个空数组).

例子

Array.of(element0[, element1[, ...[, elementN]]])

find( )和findIndex( )

  • 目的:在数组内部, 找到第一个符合条件的数组成员.
  • 参数:回调函数接受三个参数,表示当前值,当前位置,原数组.

例子

 
var stu = [
    {
        name: '张三',
        gender: '男',
        age: 20
    },
    {
        name: '王小毛',
        gender: '男',
        age: 20
    },
    {
        name: '李四',
        gender: '男',
        age: 20
    }
]

<script>
	stu.find((element) => (element.name == '李四'));
		//返回的是{name: "李四", gender: "男", age: 20}这个元素
 
	stu.findIndex((element)=>(element.name =='李四')); 
		//返回的是索引下标:2
</script>

fill( )

  • 目的:如其意,填充一个数组

  • 参数:

    1.第一个参数表示被填充的元素.
    2.第二个参数表示填充的起始位置.
    3.第三个参数表示填充的结束位置.

例子

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.fill("Runoob");

结果

Runoob,Runoob,Runoob,Runoob

ES7的数组方法

includes( )

  • 目的:表示某个数组是否包含给定的值,与字符串的includes()方法类似.
  • 参数:第一个参数表示要查找的数,第二个参数表示搜索的起始位置,返回一个布尔值.

例子

let site = ['runoob', 'google', 'taobao'];
 
site.includes('runoob'); 
// true 
 
site.includes('baidu'); 
// false

定义和用法

[1, 2, 3].includes(2);     // true
[1, 2, 3].includes(4);     // false
[1, 2, 3].includes(3, 3);  // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值