首页 web前端 js教程 JavaScript Array对象详解_javascript技巧

JavaScript Array对象详解_javascript技巧

May 16, 2016 pm 03:12 PM
javascript

本文介绍了Js的Array 数组对象,具体内容如下

目录
1. 介绍:介绍 Array 数组对象的说明、定义方式以及属性。

2. 实例方法:介绍 Array 对象的实例方法:concat、every、filter、forEach、indexOf、join、lastIndexOf、map、pop、push、reverse、shift、slice、sort、splice、toString、tounshift等。

3. 静态方法:介绍 Array 对象的静态方法:Array.isArray()。

4. 实际操作:对 Array 进行示例操作:索引、for遍历、浅度复制、深度复制等操作。

 一. 介绍
1.1 说明

      数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。JavaScript数组是无类型:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。 --《JavaScript权威指南(第六版)》 

1.2 定义方式

1

2

3

var names = new Array("张三", "李四", "王五");

//或者

var names = ["张三", "李四", "王五"];

登录后复制

1.3 属性

length:表示数组内的元素长度。

二. 实例方法
常用方法:

1) unshift() :在数组头部插入元素

2) shift() :移除并返回数组的第一个元素

3) push() :在数组尾部插入元素

4) pop() :移除并返回数组的最后一个元素

2.1 concat() :把元素衔接到数组中。不会修改原先的array,返回新的数组

参数:

①value1,value2.....valueN :任意多个值

返回值:

{Array} 一个新的数组,包含原先的Array和新加入的元素。

示例:

1

2

3

4

var demoArray = ['a', 'b', 'c'];

var demoArray2 = demoArray.concat('e');

console.log(demoArray); // => demoArray:['a','b','c'] 原数组不发生变更

console.log(demoArray2); // => ['a','b','c','e']

登录后复制

2.2 every() :依次遍历元素,判断每个元素是否都为true

参数:

①function(value,index,self){} :每个元素都会使用此函数判断是否为true,当判断到一个为false时,立即结束遍历。

  value :数组遍历的元素

  index :元素序号

  self :Array本身

返回值:

{Boolean} :只有每个元素都为true才返回true;只要一个为false,就返回false。

示例:

1

2

3

4

5

6

var demoArray = [1, 2, 3];

var rs = demoArray.every(function (value, index, self) {

 return value > 0;

});

console.log(rs); // => true

登录后复制

2.3 filter() :依次遍历元素,返回包含符合条件元素的新的数组

参数:

①function(value,index,self){} :每个元素依次调用此函数,返回包含符合条件元素的新的数组。

  value :数组遍历的元素

  index :元素序号

  self :Array本身

返回值:

{Array} 一个包含符合条件元素的新的数组

示例:

1

2

3

4

5

var demoArray = [1, 2, 3];

var rs = demoArray.filter(function (value, index, self) {

 return value > 0;

});

console.log(rs); // => [1, 2, 3]

登录后复制

2.4 forEach() :依次遍历元素,执行指定的函数;无返回值

参数:

①function(value,index,self){} :每个元素依次调用此函数

  value :数组遍历的元素

  index :元素序号

  self :Array本身

返回值:无

示例:

1

2

3

4

var demoArray = [1, 2, 3];

demoArray.forEach(function (value, index, self) {

 console.log(value); // => 依次输出:1 2 3

});

登录后复制

2.5 indexOf() :在数组中查找匹配元素。若不存在匹配的元素时,就返回-1。查找的时候使用"==="运算符,所以要区分1和'1'

参数:

①value :要在数组中查找的值。

②start :开始查找的序号位置,如果省略,则为0.

返回值:

{Int} :返回数组中第一个匹配value的序号,若不存在,返回-1

示例:

1

2

3

4

['a', 'b', 'c'].indexOf('a'); // =>0

['a', 'b', 'c'].indexOf('a', 1); // =>-1

['a', 'b', 'c'].indexOf('d'); // =>-1

[1, 2, 3].indexOf('1'); // => -1 :采用的'==='匹配方式

登录后复制

2.6 join() :将数组中所有元素通过一个分隔符拼接为一个字符串

参数:

①sparator {String}:各元素之间的分隔符,如果省略,默认以因为英文逗号','分隔。

返回值:

{String} :各元素以sparator为分隔符,拼接而成的一个字符串。

示例:

1

2

['a', 'b', 'c'].join(); // => 'a,b,c'

['a', 'b', 'c'].join('-'); // => 'a-b-c'

登录后复制

2.7 lastIndexOf :在数组中反向查找匹配元素。若不存在匹配的元素时,就返回-1。查找的时候使用"==="运算符,所以要区分1和'1'

参数:

①value :要在数组中查找的值。

②start :开始查找的序号位置,如果省略,则从最后一个元素开始查找。

返回值:

{Int} :从右到左开始查找数组中第一个匹配value的序号,若不存在,返回-1

示例:

1

2

3

4

5

['a', 'b', 'c'].lastIndexOf('a'); // => 0

['a', 'b', 'c'].lastIndexOf('a', 1); // => 0

['a', 'b', 'c'].lastIndexOf('d'); // => -1

[1, 2, 3].lastIndexOf('1'); // => -1 :采用的'==='匹配方式

登录后复制

2.8 map() :依次遍历并计算每个元素,返回计算好的元素的数组

参数:

①function(value,index,self){} :每个元素依次调用此函数,返回计算好的元素

  value :数组遍历的元素

  index :元素序号

  self :Array本身

返回值:

{Array} 一个包含就算好的元素的新的数组

示例:

1

2

3

4

[1, 2, 3].map(function (value, index, self) {

 return value * 2;

}); // => [2, 4, 6]

登录后复制

2.9 pop() :移除并返回数组的最后一个元素

参数:无

返回值:

{Object} 数组的最后一个元素;若数组为空,返回undefined

示例:

1

2

3

4

5

var demoArray = ['a', 'b', 'c'];

demoArray.pop(); // => c

demoArray.pop(); // => b

demoArray.pop(); // => a

demoArray.pop(); // => undefined

登录后复制

2.10 push() :把元素添加到数组尾部

参数:

①value1,value2.....valueN :任意多个值添加到数组尾部

返回值:

{int} 数组新的长度

示例:

1

2

3

4

var demoArray = ['a', 'b', 'c'];

demoArray.push('d'); // => 4, demoArray : ['a', 'b', 'c', 'd']

demoArray.push('e', 'f'); // => 6, demoArray :['a', 'b', 'c', 'd', 'e', 'f']

console.log(demoArray); // => ['a', 'b', 'c', 'd', 'e', 'f']

登录后复制

2.11 reverse() :反转数组元素的顺序

参数:无

返回值:无(在原数组内进行元素顺序反转)。

示例:

1

2

3

var demoArray = ['a', 'b', 'c', 'd', 'e'];

demoArray.reverse();

console.log(demoArray); // => ["e", "d", "c", "b", "a"]

登录后复制

2.12 shift() :移除并返回数组的第一个元素

参数:无

返回值:

{Object} 数组的第一个元素;若数组为空,返回undefined。

示例:

1

2

3

4

5

var demoArray = ['a', 'b', 'c'];

demoArray.shift(); // => a

demoArray.shift(); // => b

demoArray.shift(); // => c

demoArray.shift(); // => undefined

登录后复制

2.13 slice(startIndex,endIndex) :返回数组的一部分

参数:

①startIndex :开始处的序号;若为负数,表示从尾部开始计算,-1代表最后一个元素,-2倒数第二个,依此类推。

②endIndex : 结束处的元素后一个序号,没指定就是结尾。截取的元素不包含此处序号的元素,结尾为此处序号的前一个元素。

返回值:

{Array} 一个新的数组,包含从startIndex到endIndex前一个元素的所有元素。

示例:

1

2

3

4

5

[1, 2, 3, 4, 5, 6].slice(); // => [1, 2, 3, 4, 5, 6]

[1, 2, 3, 4, 5, 6].slice(1); // => [2, 3, 4, 5, 6] :从序号1开始截取

[1, 2, 3, 4, 5, 6].slice(0, 4); // => [1, 2, 3, 4] :截取序号0到序号3(序号4的前一个)的元素

[1, 2, 3, 4, 5, 6].slice(-2); // => [5, 6] :截取后面的2个元素

登录后复制

2.14 sort(opt_orderFunc) :按一定的规则进行排序

参数:

①opt_orderFunc(v1,v2) {Function}:可选的排序规则函数。若省略,将按照元素的字母进行从小到大排序。

  v1 :遍历时前面的元素。

  v2 :遍历时后面的元素。

排序规则:

比较v1和v2,返回一个数字来表示v1和v2的排序规则:

小于0 :v1小于v2,v1排在v2的前面。

等于0 :v1等于v2,v1排在v2的前面。

大于0 :v1大于v2,v1排在v2的后面。

返回值:无(在原先数组里进行排序操作)。

示例:

1

2

3

4

5

6

7

8

9

10

[1, 3, 5, 2, 4, 11, 22].sort(); // => [1, 11, 2, 22, 3, 4, 5] :这里都元素都被转换为字符,11的字符在2前

  

[1, 3, 5, 2, 4, 11, 22].sort(function (v1, v2) {

 return v1 - v2;

}); // => [1, 2, 3, 4, 5, 11, 22] :从小到大排序

  

[1, 3, 5, 2, 4, 11, 22].sort(function (v1, v2) {

 return -(v1 - v2); //取反,就可以转换为 从大到小

}); // => [22, 11, 5, 4, 3, 2, 1]

登录后复制

2.15 splice() :插入、删除数组元素

参数:

①start {int} :开始插入、删除或替换的起始序号。

②deleteCount {int} :要删除元素的个数,从start处开始计算。

③value1,value2 ... valueN {Object} :可选参数,表示要插入的元素,从start处开始插入。若②参不为0,那么先执行删除操作,再执行插入操作。

返回值:

{Array} 返回一个包含删除元素的新的数组。若②参为0,表示没元素删除,返回一个空数组。

示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

// 1.删除

var demoArray = ['a', 'b', 'c', 'd', 'e'];

var demoArray2 = demoArray.splice(0, 2); // 删除从序号从0开始的2个元素,返回包含删除元素的数组:['a', 'b']

console.log(demoArray2); // => ['a', 'b']

console.log(demoArray); // => ['c', 'd', 'e']

  

// 2.插入

var demoArray = ['a', 'b', 'c', 'd', 'e'];

var demoArray2 = demoArray.splice(0, 0, '1', '2', '3'); // ②参为0,返回空数组

console.log(demoArray2); // => [ ]

console.log(demoArray); // => ['1', '2', '3', 'a', 'b', 'c', 'd', 'e']

  

// 3.先删除再插入

var demoArray = ['a', 'b', 'c', 'd', 'e'];

// 当②参不为0,那么先执行删除操作(删除序号从0开始的4个元素,返回包含被删除元素的数组),再执行插入操作

var demoArray2 = demoArray.splice(0, 4, '1', '2', '3');

console.log(demoArray2); // => ['a', 'b', 'c', 'd']

console.log(demoArray); // => ['1', '2', '3', 'a', 'b', 'c', 'd', 'e']

登录后复制

2.16 toString() :将数组中所有元素通过一个英文逗号','拼接为一个字符串

参数:无

返回值:

{String} 数组中所有元素通过一个英文逗号','拼接为一个字符串,并返回。与调用无参join()方法一样。

示例:

1

2

[1, 2, 3, 4, 5].toString(); // => '1,2,3,4,5'

['a', 'b', 'c', 'd', 'e'].toString(); // => 'a,b,c,d,e'

登录后复制

2.17 unshift() :在数组头部插入元素

参数:

①value1,value2.....valueN :任意多个值添加到数组头部

返回值:

{int} 数组新的长度

示例:

1

2

3

4

5

6

var demoArray = [];

demoArray.unshift('a'); // => demoArray:['a']

demoArray.unshift('b'); // => demoArray:['b', 'a']

demoArray.unshift('c'); // => demoArray:['c', 'b', 'a']

demoArray.unshift('d'); // => demoArray:['d', 'c', 'b', 'a']

demoArray.unshift('e'); // => demoArray:['e', 'd', 'c', 'b', 'a']

登录后复制

三. 静态方法
3.1 Array.isArray() :判断对象是否为数组

参数:

①value {Object}:任意对象

返回值:

{Boolean} 返回判断结果。当为 true时,表示对象为数组;为false时,表示对象不是数组

示例:

1

2

3

4

Array.isArray([]); // => true

Array.isArray(['a', 'b', 'c']); // => true

Array.isArray('a'); // => false

Array.isArray('[1, 2, 3]'); // => false

登录后复制

四. 实际操作
4.1 索引

说明:每个元素在数组中有一个位置,以数字表示,称为索引。索引是从0开始计,即第一个元素的索引为0,第二个元素的索引为1,依此类推;

当获取一个数组不存在的索引时,返回 undefined。

示例:

1

2

3

4

5

var demoArray = ['a', 'b', 'c', 'd', 'e'];

demoArray[0]; // => 获取第一个元素:'a'

demoArray[0] = 1; // 设置第一个元素为 1

console.log(demoArray); // => demoArray:[1, 'b', 'c', 'd', 'e']

console.log(demoArray[9]); // => undefined :当获取的索引不存在时,返回 undefined

登录后复制

4.2 for 语句

说明:可以通过for语句逐个遍历数组

示例:

1

2

3

4

var demoArray = ['a', 'b', 'c', 'd', 'e'];

for (var i = 0, length = demoArray.length; i < length; i++) {

 console.log(demoArray[i]); // => 逐个输出数组内的元素

}

登录后复制

4.3 浅度复制

说明:Array类型是一种引用类型;当数组a复制给数组b时,对数组b进行元素修改,数组a也会发生修改。

示例:

1

2

3

4

5

var demoArrayA = ['a', 'b', 'c', 'd', 'e'];

var demoArrayB = demoArrayA; // 把数组A 赋值给数组B

demoArrayB[0] = 1; // 对数组B 的元素进行修改

console.log(demoArrayA); // => [1, 'b', 'c', 'd', 'e']:数组A 的元素也发生了变更

登录后复制

4.4 深度复制

说明:使用concat()方法,返回新的数组;防止浅度复制的情况发生,对数组b进行元素修改操作,数组a不发生变更。

示例:

1

2

3

4

5

var demoArrayA = ['a', 'b', 'c', 'd', 'e'];

var demoArrayB = demoArrayA.concat(); // 使用concat()方法,返回新的数组

demoArrayB[0] = 1; // 对数组B 的元素进行修改

console.log(demoArrayA); // => ['a', 'b', 'c', 'd', 'e']:数组A 的元素没变更

console.log(demoArrayB); // => [ 1, 'b', 'c', 'd', 'e']:数组B 的元素发生了变更

登录后复制

4.5 判断2个数组是否相等

说明:Array数组为引用类型,所以哪怕 []===[] 都会返回false,所以可通过数组toString()方法返回的字符串判断是否相等。

示例:

1

2

3

console.log([]===[]); // => false

console.log(['a', 'b'] === ['a', 'b']); // => false

console.log(['a', 'b'].toString() === ['a', 'b'].toString()); // true

登录后复制

以上就是本文的全部内容,希望对大家学习javascript  Array对象有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用WebSocket和JavaScript实现在线语音识别系统 如何使用WebSocket和JavaScript实现在线语音识别系统 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术 WebSocket与JavaScript:实现实时监控系统的关键技术 Dec 17, 2023 pm 05:30 PM

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统 如何利用JavaScript和WebSocket实现实时在线点餐系统 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统 如何使用WebSocket和JavaScript实现在线预约系统 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统 JavaScript和WebSocket:打造高效的实时天气预报系统 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

简易JavaScript教程:获取HTTP状态码的方法 简易JavaScript教程:获取HTTP状态码的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

javascript中如何使用insertBefore javascript中如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

JavaScript和WebSocket:打造高效的实时图像处理系统 JavaScript和WebSocket:打造高效的实时图像处理系统 Dec 17, 2023 am 08:41 AM

JavaScript是一种广泛应用于Web开发的编程语言,而WebSocket则是一种用于实时通信的网络协议。结合二者的强大功能,我们可以打造一个高效的实时图像处理系统。本文将介绍如何利用JavaScript和WebSocket来实现这个系统,并提供具体的代码示例。首先,我们需要明确实时图像处理系统的需求和目标。假设我们有一个摄像头设备,可以采集实时的图像数

See all articles