Javascript简明教程(3) 数组

JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素。
要取得Array的长度,直接访问length属性:

[JavaScript] 纯文本查看 复制代码

?


001

002

var arr = [1, 2, 3.14, ‘Hello‘, null, true];

arr.length; // 6

请注意,直接给Array的length赋一个新的值会导致Array大小的变化:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

004

005

006

var arr = [1, 2, 3];

arr.length; // 3

arr.length = 6;

arr; // arr变为[1, 2, 3, undefined, undefined, undefined]

arr.length = 2;

arr; // arr变为[1, 2]

Array可以通过索引把对应的元素修改为新的值,因此,对Array的索引进行赋值会直接修改这个Array:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

var arr = [‘A‘, ‘B‘, ‘C‘];

arr[1] = 99;

arr; // arr现在变为[‘A‘, 99, ‘C‘]

请注意,如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

var arr = [1, 2, 3];

arr[5] = ‘x‘;

arr; // arr变为[1, 2, 3, undefined, undefined, ‘x‘]

大多数其他编程语言不允许直接改变数组的大小,越界访问索引会报错。然而,JavaScript的Array却不会有任何错误。在编写代码时,不建议直接修改Array的大小,访问索引时要确保索引不会越界。

indexOf
与String类似,Array也可以通过indexOf()来搜索一个指定的元素的位置:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

004

005

var arr = [10, 20, ‘30‘, ‘xyz‘];

arr.indexOf(10); // 元素10的索引为0

arr.indexOf(20); // 元素20的索引为1

arr.indexOf(30); // 元素30没有找到,返回-1

arr.indexOf(‘30‘); // 元素‘30‘的索引为2

注意了,数字30和字符串‘30‘是不同的元素。

slice
slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

var arr = [‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘];

arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: [‘A‘, ‘B‘, ‘C‘]

arr.slice(3); // 从索引3开始到结束: [‘D‘, ‘E‘, ‘F‘, ‘G‘]

注意到slice()的起止参数包括开始索引,不包括结束索引。

如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

004

var arr = [‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘];

var aCopy = arr.slice();

aCopy; // [‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘]

aCopy === arr; // false

push和poppush()向Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

004

005

006

007

008

009

var arr = [1, 2];

arr.push(‘A‘, ‘B‘); // 返回Array新的长度: 4

arr; // [1, 2, ‘A‘, ‘B‘]

arr.pop(); // pop()返回‘B‘

arr; // [1, 2, ‘A‘]

arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次

arr; // []

arr.pop(); // 空数组继续pop不会报错,而是返回undefined

arr; // []

unshift和shift如果要往Array的头部添加若干元素,使用unshift()方法,shift()方法则把Array的第一个元素删掉:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

004

005

006

007

008

009

var arr = [1, 2];

arr.unshift(‘A‘, ‘B‘); // 返回Array新的长度: 4

arr; // [‘A‘, ‘B‘, 1, 2]

arr.shift(); // ‘A‘

arr; // [‘B‘, 1, 2]

arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次

arr; // []

arr.shift(); // 空数组继续shift不会报错,而是返回undefined

arr; // []

sortsort()可以对当前Array进行排序,它会直接修改当前Array的元素位置,直接调用时,按照默认顺序排序:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

var arr = [‘B‘, ‘C‘, ‘A‘];

arr.sort();

arr; // [‘A‘, ‘B‘, ‘C‘]

能否按照我们自己指定的顺序排序呢?完全可以,我们将在后面的函数中讲到。

reversereverse()把整个Array的元素给掉个个,也就是反转:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

var arr = [‘one‘, ‘two‘, ‘three‘];

arr.reverse();

arr; // [‘three‘, ‘two‘, ‘one‘]

splice

splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

004

005

006

007

008

009

var arr = [‘Microsoft‘, ‘Apple‘, ‘Yahoo‘, ‘AOL‘, ‘Excite‘, ‘Oracle‘];// 从索引2开始删除3个元素,然后再添加两个元素:

arr.splice(2, 3, ‘Google‘, ‘Facebook‘); // 返回删除的元素 [‘Yahoo‘, ‘AOL‘, ‘Excite‘]

arr; // [‘Microsoft‘, ‘Apple‘, ‘Google‘, ‘Facebook‘, ‘Oracle‘]

// 只删除,不添加:

arr.splice(2, 2); // [‘Google‘, ‘Facebook‘]

arr; // [‘Microsoft‘, ‘Apple‘, ‘Oracle‘]

// 只添加,不删除:

arr.splice(2, 0, ‘Google‘, ‘Facebook‘); // 返回[],因为没有删除任何元素

arr; // [‘Microsoft‘, ‘Apple‘, ‘Google‘, ‘Facebook‘, ‘Oracle‘]

concat

concat()方法把当前的Array和另一个Array连接起来,并返回一个新的Array:

[JavaScript] 纯文本查看 复制代码

?


001

002

003

004

var arr = [‘A‘, ‘B‘, ‘C‘];

var added = arr.concat([1, 2, 3]);

added; // [‘A‘, ‘B‘, ‘C‘, 1, 2, 3]

arr; // [‘A‘, ‘B‘, ‘C‘]

请注意,concat()方法并没有修改当前Array,而是返回了一个新的Array。
实际上,concat()方法可以接收任意个元素和Array,并且自动把Array拆开,然后全部添加到新的Array里:

[JavaScript] 纯文本查看 复制代码

?


001

002

var arr = [‘A‘, ‘B‘, ‘C‘];

arr.concat(1, 2, [3, 4]); // [‘A‘, ‘B‘, ‘C‘, 1, 2, 3, 4]

join

join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串:

[JavaScript] 纯文本查看 复制代码

?


001

002

var arr = [‘A‘, ‘B‘, ‘C‘, 1, 2, 3];

arr.join(‘-‘); // ‘A-B-C-1-2-3‘

如果Array的元素不是字符串,将自动转换为字符串后再连接。

http://www.ququer.org/

sodu小说

时间: 2024-10-14 00:19:45

Javascript简明教程(3) 数组的相关文章

Javascript简明教程(2) 字符串

转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\.ASCII字符可以以\x##形式的十六进制表示,例如: [JavaScript] 纯文本查看 复制代码 ? 001 '\x41'; // 完全等同于 'A' 还可以用\u####表示一个Unicode字符: [JavaScript] 纯文本查看 复制代码 ? 001 '\u4e2d\u6587'; // 完全等同于 '中文' 由于多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一

Javascript简明教程(5) 条件判断

JavaScript使用if () { ... } else { ... }来进行条件判断.例如,根据年龄显示不同内容,可以用if语句实现如下: [JavaScript] 纯文本查看 复制代码 ? 001 002 003 004 005 006 var age = 20; if (age >= 18) { // 如果age >= 18为true,则执行if语句块     alert('adult'); } else { // 否则执行else语句块     alert('teenager');

Smarty教程1.引擎定义2.主要优点3.简明教程4.使用判断5.循环数组6.常见问题8.解释程序

Smarty是一个php模板引擎.更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法.可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人.例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现.在Smarty的程序里,这些被忽略了.模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等).有一天程序员想要改变文章检索的方式(

JavaScript强化教程——数组的基本处理函数

本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 —— 数组的基本处理函数 Array.push();添加元素在数组最后,并返回数组新的长度 Array.pop();删除最后一个元素,减小数组长度,并返回最后一个元素 Array.unshift();在数组前面添加元素 Array.splice(n,x); //n数组下标 x删除几个 从n开始删除 (x=1时,表明删除当前下标为n的元素) indexOf() 搜索整个数组中具有给定制的元素,返回找到的第一

Lisp简明教程

此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程>ODT格式下载 具体的内容我已经编辑好了,想下载的朋友可以用上面的链接.本人水平有限,如有疏漏还望之处(要是有谁帮我排排版就好了)还望指出!资料虽然是我整理的,但都是网友的智慧,如果有人需要转载,请至少保留其中的“鸣谢”页(如果能有我就更好了:-)). Lisp简明教程 整理人:Chaobs 邮箱:[

solidity 0.5.7简明教程

以太坊不仅是一种加密数字货币,它更是功能完备的智能合约平台,solidity就是用来开发以太坊上的智能合约的原生开发语言.solidity最早发布于2015年,它是第一种图灵完备的智能合约专用开发语言.目前除了以太坊之外,在其他区块链中也逐渐开始支持solidity,例如hyperledger fabric.tendermint等.在这个solidity快速教程中,我们将使用最新0.5.7版的solidity,以一个具体的案例来介绍solidity智能合约的开发.部署与交互,希望对你快速掌握so

Vbs 脚本编程简明教程之一

-为什么要使用 Vbs ? 在 Windows 中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动 计算机第一件事情就是打开 WORD ,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某 些数据进行整理,把各式各样的数据按照某种规则排列起来--.这些事情重复.琐碎,使人容易疲劳. 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往

Java泛型简明教程

Java泛型简明教程 博客分类: Java综合 JavaApple数据结构CC++ Java泛型简明教程 本文是从 Java Generics Quick Tutorial 这篇文章翻译而来. 泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它.关于Java泛型的教程,免费的,不免费的,有很多.我遇到的最好的教材有: The Java Tutorial Java Generics and Collections ,

JSP简明教程(四):EL表达式语言、JavaBean、Cookie、Session

EL表达式语言 EL就是Expression Language,目的是简化JSP的语法.来看几个例子就明白了. ${test} 会翻译成<%=test%> ${test.name} 会翻译成 <%=test.getName()%> ${sessionScope.username}} 会翻译成 <%=session.getAttribute("username")%> 只有sessionScope.requestScope等才会翻译成getAttrib