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; 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));
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());
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]
javascript 对象初探 (四)--- 内建对象之旅之Array的更多相关文章
- javascript——对象的概念——内建对象
包括内建对象的所有对象都是Object对象的子对象. 1.Array():构建数组的内建构造器函数 例:创建数组方式有两种: 2.Boolean:是对象,与基本数据类型 布尔值 不相同 例:创建Boo ...
- 【JavaScript学习】-JS内置对象1-对象概述
对象(object): JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和 方法.JavaScript 提供多个内建对象,比如 String.Date.Ar ...
- javascript:面向对象和常见内置对象及操作
本文内容: 面向对象 常见内置对象及操作 首发日期:2018-05-11 面向对象: JavaScript 是面向对象的编程语言 (OOP).OOP 语言使我们有能力定义自己的对象和变量类型. 对象是 ...
- Python源码剖析——01内建对象
<Python源码剖析>笔记 第一章:对象初识 对象是Python中的核心概念,面向对象中的"类"和"对象"在Python中的概念都为对象,具体分为 ...
- javascript内建对象
内建对象等价于内建构造器内建对象大致分为三类:数据封装类对象--Object.Array.Boolean.Number和String工具类对象--Math.Date.RegExp等用于提供遍历的对象错 ...
- 哪个HTML5内建对象用于在画布上绘制?()
哪个HTML5内建对象用于在画布上绘制?() getContent getContext getGraphics getCanvas 我的理解: A.C.D不存在HTML5,,js方法中 HTML 5 ...
- 18第一章 ASP.Net内建对象
第一章 ASP.Net内建对象 第一章 ASP.Net内建对象 ASP.Net为保持用户的数据和信息,内建了许多对象,包括Application.Response.Requ ...
- JS-安全检测JavaScript基本数据类型和内置对象的方法
前言:在前端开发中经常会需要用到检测变量数据类型的需求,比如:判断一个变量是否为undefined或者null来进行下一步的操作,今天在阅读“编写高质量代码-改善JavaScript程序的188个建议 ...
- jsp九个内置对象、四个域对象及Servlet的三大域对象
一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创 ...
随机推荐
- php的memcache和memcached扩展区别
老生长谈的问题了.我这里就整理一下. memcache的文档在:http://pecl.php.net/package/memcache memcached的文档在:http://pecl.php.n ...
- 如何解读SQL Server日志(1/3)
SQL Server 的事务日志包含所有数据修改的操作记录.分析日志一般作为解决某些问题的最后手段,如查看某些意外的修改.理解和分析日志内容是件非常困难的事情,fn_dblog通常会输出非常多的数据, ...
- JavaScript资源大全
目录 前端MVC 框架和库 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 基于 Node 的 CMS 框架 模板引擎 数据可视化 编辑器 UI 输入 日历 选择 文件上 ...
- C# 图片自由变换 任意扭曲
之前想过要做个地铁驾驶的游戏,其中想把一些原本是矩形图片弄成一个梯形,但是发现GID+上面没有类似的方法.于是在谷歌谷了一下.没有!只能找到令人垂涎的,并没有源码.按照自己的想法尝试了一两天,有点效果 ...
- QT TableWidget 应用笔记
QT TableWidget应用笔记 分类: QT2013-05-21 16:22 2561人阅读 评论(0) 收藏 举报 1.设置表头及大小 QStringList header; header&l ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(二十一 )TCPConnectionListener
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- CentOS 配置防火墙操作实例(启、停、开、闭端口)
防火墙的基本操作命令 查询防火墙状态:[root@localhost ~]# service iptables status<回车> 停止防火墙:[root@localhost ~]# ...
- SQLServer中游标是如何处理数据的?
游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力.我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许 ...
- [转]JavaScript程序编码规范
原文:http://javascript.crockford.com/code.html 作者:Douglas Crockford 译文:http://www.yeeyan.com/articles/ ...
- XPath的使用
最近在mybatis的时候,发现源码中出现了这样的一句代码 private void configurationElement(XNode context) { try { String namesp ...