javascript数组详解


Posted in Javascript onOctober 22, 2014

如果你是一个有经验的开发者,你可能会认为这个问题比较简单,但是有的时候,我们会感觉这个问题比较有趣。

首先我们来看看数组的定义:“An array is just a list of values which can be accessed by using an integer as the “key”. The list starts at 0 and goes up from there.”,下面我们用对象来描述数组的定义:

var arr = ["benjamin", "zuojj"];

//=>

var arr = {

    "0": "benjamin",

    "1": "zuojj"

};

看上面的例子,总感觉缺少了什么,OK,数组的长度:

 var arr = {

    "0"      : "benjamin",

    "1"      : "zuojj",

    "length" : 2

};

我们知道,在Javascript语言中,数组是一个特殊的对象,我们可以使用访问数组的方式来访问对象的属性,同时,数组也可以像对象那样添加属性。看下例:

var arr = {

    "0"      : "benjamin",

    "1"      : "zuojj",

    "length" : 2

};

//Outputs: "benjamin"

console.log(arr[0]);

//Outputs: 2

console.log(arr.length);
var arr = ["benjamin", "zuojj"];

arr.url = "3water.com";

//Outputs: "3water.com"

console.log(arr.url);

//Outputs: 2

console.log(arr.length);

下面我们来看看数组的方法,数组有很多可操作的方法,如indexOf/slice/splice/sort等,我们知道实际上这些方法存在于Array.prototype中。看下面的例子:

var arr = ["benjamin", "zuojj"];

//Outputs: 1

console.log(arr.indexOf("zuojj"));

arr.indexOf = function(str) {

    return "It is customed indexOf!";

}

//Outputs: "It is customed indexOf!"

console.log(arr.indexOf("zuojj"));

事实上,我们可以使用对象重载所有的数组方法。看下面的push方法的例子:

var arr = {

    length: 0,

    push: function(val) {

        //赋值

        this[this.length] = val;

        //更新数组长度

        this.length += 1;

        //返回数组长度

        return this.length;

    }

}

arr.push("zuojj");

arr.push("benjamin");

//Object {0: "zuojj", 1: "benjamin", length: 2, push: function}

console.log(arr);

但是有一个是不能从新实现的,数组的字面量定义:

var arr = ["benjamin", "zuojj"];

但是我们可以使用构造函数来代替:

var arr = new Array("benjamin", "zuojj");

如果不适用字面量定义数组,那么我们可以重定义数组的定义,以我们自己的方式。

var myArr = new CustomArray("benjamin", "zuojj");

现在你知道javascript中数组是如何工作的了吧,希望对大家有所帮助。

Javascript 相关文章推荐
Aptana调试javascript图解教程
Nov 30 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
May 10 Javascript
JS之Date对象和获取系统当前时间详解
Jan 13 Javascript
jquery中checkbox全选失效的解决方法
Dec 26 Javascript
artDialog+plupload实现多文件上传
Jul 19 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
Aug 06 Javascript
微信小程序 图片宽度自适应的实现
Apr 06 Javascript
JavaScript多线程运行库Nexus.js详解
Dec 22 Javascript
vue移动端轻量级的轮播组件实现代码
Jul 12 Javascript
在vue项目中引用Iview的方法
Sep 14 Javascript
JS实现的雪花飘落特效示例
Dec 03 Javascript
JavaScript canvas基于数组生成柱状图代码实例
Mar 06 Javascript
Javascript 数组排序详解
Oct 22 #Javascript
Javascript中arguments对象详解
Oct 22 #Javascript
Javascript中的默认参数详解
Oct 22 #Javascript
js style动态设置table高度
Oct 21 #Javascript
js读写json文件实例代码
Oct 21 #Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 #Javascript
javascript Deferred和递归次数限制实例
Oct 21 #Javascript
You might like
php4的session功能评述(三)
2006/10/09 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
javascript globalStorage类代码
2009/06/04 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
vue select选择框数据变化监听方法
2018/08/24 Javascript
浅谈python字符串方法的简单使用
2016/07/18 Python
windows上安装Anaconda和python的教程详解
2017/03/28 Python
Python中偏函数用法示例
2018/06/07 Python
对python sklearn one-hot编码详解
2018/07/10 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
会计专业自荐信范文
2013/12/02 职场文书
百日安全活动总结
2014/05/04 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
党建工作整改措施
2014/10/28 职场文书
医院营销工作计划
2015/01/16 职场文书
英语教师个人总结
2015/02/09 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
python flask开发的简单基金查询工具
2021/06/02 Python
MySQL数据库之存储过程 procedure
2022/06/16 MySQL