javascript 对象初探 (四)--- 内建对象Array

 我们不要去纠结神马是内建对象,神马是內建构造器。到后来你们便会发现其实她们都是对象。

Array()是一个构建数组的內建构造器函数:

var arr = new Array(); 

与下面的是等效的:

var arr = []; //数组文本表识法

无论数组是以神马方式创建的,我们都可以照常向里面添加元素。

arr[0] = 1;
arr[1] = 2;
console.log(arr) // [1, 2]

当我们使用构造器函数Array()创建数组时,也可以通过传值的方式为其添加元素:

var arr = new Array(1,2,3,true);
console.log(arr); // [1,2,3,true] 

如果我们向构造器函数传递单个数字,她就会出现一个异常情况:

var arr = new Array(5);
console.log(arr); // [undefinedX5]

既然数组是有构造函数创建出来的,那她是不是一个对象呢,答案是肯定的!yes那就是一个对象!!!我们可以验证一下:

console.log(typeof arr); // Object

既然它是一个对象,那么他就继承了Object的所有属性和方法。

例如:constructor, prototype等等等等。。。。

当然数组还是有一些独特之处的:

  1. 数组的属性名是从0开始递增,并自动生成数值。

  2. 数组拥有一个记录元素数量的length属性。

   3. 数组在其父级对象的基础上创建了许多额外的內建方法。

我们来验证一下数组与对象的区别:

首先定义数组的时候会自动生成length属性,而一般对象是没有length属性的。

var a = [], b = {};
a.length;  // 0
b.length  // undefined

在为数组和对象添加以数字或非数字为键明的属性操作上两者没有神马区别:

a[0] = 1;
b[0] = 1;
a.child = 2;
b.child = 2;

length属性会随着数字键名的数量而更新,而忽略非数字键名。

我们也可以手动设置数组length属性,如果设置的数字大于数组元素的数量,剩余的部分会被空(undefined)所填充,相反如果设置的length属性小于当前数组元素的数量那么超出的元素会被自动删除。

数组的內建方法:

concat() 方法:

concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

var a = [1,2,3];
document.write(a.concat(4,5)); // [1,2,3,4,5]
var arr = new Array(3)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"

var arr2 = new Array(3)
arr2[0] = "4"
arr2[1] = "5"
arr2[2] = "6"

document.write(arr.concat(arr2)) // [1,2,3,4,5,6]
var arr = new Array(3)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"

var arr2 = new Array(3)
arr2[0] = "4"
arr2[1] = "5"
arr2[2] = "6"

var arr3 = new Array(2)
arr3[0] = "7"
arr3[1] = "8"

console.log(arr.concat(arr2,arr3)); // [1,2,3,4,5,6,7,8]

join() 方法:

join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的(默认为逗号,)。

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

document.write(arr.join()); // ‘1,2,3‘
var arr = new Array(3)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"

document.write(arr.join(".")); // ‘1.2.3‘

push() 方法:

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度(注意是长度length,而不是返回新的数组)。

var arr = new Array(3)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"
console.log(arr.push(4)); // 4

pop() 方法:

pop() 方法用于删除并返回数组的最后一个元素。

var arr = new Array(3)
arr[0] = "1a"
arr[1] = "2a"
arr[2] = "3a"
console.log(arr.pop()); // 3a

reverse() 方法:

reverse() 方法用于颠倒数组中元素的顺序。

var arr = new Array(3)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"
console.log(arr.reverse()); // [3,2,1]

unshift() 方法:

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

var arr = new Array()
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"
console.log(arr.unshift(4)); // [4,1,2,3]

shift() 方法:

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

var arr = new Array(3)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"
console.log(arr.shift()); // 1

slice() 方法:

slice() 方法可从已有的数组中返回选定的元素。

请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。

var arr = new Array(3)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"
console.log(arr.slice(1)); // [2,3]
var arr = new Array(6)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"
arr[3] = "4"
arr[4] = "5"
arr[5] = "6"
console.log(arr.slide(2,5)); // [3,4,5]

splice() 方法:

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。

var arr = new Array(6)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"
arr[3] = "4"
arr[4] = "5"
arr[5] = "6"
console.log(arr.split(2,0,111)); [1,2,111,4,5,6]
var arr = new Array(6)
arr[0] = "1"
arr[1] = "2"
arr[2] = "3"
arr[3] = "4"
arr[4] = "5"
arr[5] = "6"
console.log(arr.split(2,3,888)); //[1,2,888,6]

sort() 方法:

sort() 方法用于对数组的元素进行排序。对数组的引用。请注意,数组在原数组上进行排序,不生成新的数组。

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
console.log(arr); // [1,10,1000,25,40,5]

上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

function sortNumber(a,b){
  return a - b;
}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
console.log(arr.sort(sortNumber)); //[1,5,10,25,40,1000] 

时间: 2024-10-10 17:27:46

javascript 对象初探 (四)--- 内建对象Array的相关文章

javascript——对象的概念——内建对象

包括内建对象的所有对象都是Object对象的子对象. 1.Array():构建数组的内建构造器函数 例:创建数组方式有两种: 2.Boolean:是对象,与基本数据类型 布尔值 不相同 例:创建Boolean对象. 上例中 a 是对象而不是布尔值.可以通过valueOf()获取其布尔值.通常 Boolean 对象不会用于创建对象,而是利用该对象强制转换数据类型. 在强制转换时,以下内容将被转换为 false:空字符串'';null;undefined;数字0;NaN;false; 例: 即:Bo

JavaScript内建对象

JavaScript内建对象包括: String.Array.Math.Date.Boolean.Number.Event.RegExp. 使用内建对象的属性和方法需要使用new关键字和构造函数创建内建对象的实例,对象实例继承对象的属性和方法. String 定义了所有处理字符串的操作. Array 提供一个数组模型,存储大量有序数据. Math 定义了所有数学运算. Date 定义了所有处理日期和时间的操作. Boolean 定义了处理布尔值的操作. Number 定义了处理数字的操作. Ev

内建对象

内建对象是指由ECMAScript事先提供的.不依赖于宿主环境的对象,这些对象在程序运行之前就已经存在了.可以直接在程序中任何地方任何时候拿来使用. 1. 内建全局单例对象   Global.Math.JSON. 在整个执行环境中只有一个对象实例,这些对象没有内部属性[[Construct]]和[[Call]],所以不能使用new来创建,也不能作为函数来调用,而是直接使用对象名称来引用其属性和方法(对于全局对象,则可以直接使用属性和方法名). 1.1  常用内建全局单例对象方法 Global对象

JS-安全检测JavaScript基本数据类型和内置对象的方法

前言:在前端开发中经常会需要用到检测变量数据类型的需求,比如:判断一个变量是否为undefined或者null来进行下一步的操作,今天在阅读“编写高质量代码-改善JavaScript程序的188个建议”这本书的时候看到这个比较好的方法,在此小记一笔以备在以后的开发中使用. 1:如下所示是我编写的演示代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>I

javascript中的arguments内置对象

什么是arguments arguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的.所有主要的js函数库都利用了arguments对象.所以agruments对象对于javascript程序员来说是必需熟悉的. 所有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数.他不是一个数组,如果用typeof arguments,返回的是'object'.虽然我们可以用调用数据的方法来调用arguments.比如length,还有

javascript的优缺点和内置对象

1)优点:简单易用,与Java有类似的语法,可以使用任何文本编辑工具编写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格的变量声明,而且内置大量现成对象,编写少量程序可以完成目标: 2)缺点:不适合开发大型应用程序: 3)Javascript有11种内置对象: Array.String.Date.Math.Boolean.Number.Function.Global.Error.RegExp.Object. 原文地址:https://www.cnblogs.com/yuyu6

ASP基础教程:ASP内建对象Response

在上一篇中作者给大家详细介绍了 ASP 内建对象之一 Request 的使用方法,相信各位通过一系列的实践已经能够熟练掌握,本篇将继续给大家介绍 ASP 的另一个内建对象 Response. 最近,有很多朋友来“妹儿”催我加快 ASP 篇一文的写作速度,并急切地询问哪里有关于 ASP 的教材.我深深地被大家的学习热情所打动,因此决定将自己平时所搜集的一些 ASP 信息资料拿出来和大家共享,也希望所有的朋友能慷慨地将自己搜集的有关 ASP 的资料告诉作者,谢谢.由于目前国内有关 ASP 的中文教材

ASP基础教程:ASP内建对象Application和Session

在上一篇中作者给大家详细介绍了 ASP 内建对象 Response 的使用方法,在这一篇中作者将继续给大家介绍另两个非常实用且重要的 ASP 的内建对象 Application 和 Session. 在 ASP 的内建对象中除了用于发送.接收和处理数据的对象外,还有一些非常实用的代表 Active Server 应用程序和单个用户信息的对象. 让我们先来看看 Application 对象.在同一虚拟目录及其子目录下的所有 .asp 文件构成了 ASP 应用程序.我们非但可以使用 Applicat

ASP基础教程:ASP内建对象Server

通过前九篇的理论和实践,相信大家已经对 ASP 有了系统的了解,虽然至今为止,我们只学了 ASP 的 4 个内建对象,但已经完全能够写出一些实用的小程序了.今天,作者将继续给大家讲解最后一个 ASP 内建对象——Server. 在开始本次课程之前,我仍要在这里回答一些朋友们提出的比较普遍的问题.最近仍有不少朋友来信问我,如何构建服务器端的 Active Server Page 环境.我想可能是我在前几篇中没有讲清楚,因此,在本篇的开头有必要把这个问题详细阐述一遍. ASP 的应用完全是基于 Mi