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 相关文章推荐
Javascript 原型和继承(Prototypes and Inheritance)
Apr 01 Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
Apr 07 Javascript
Javascript select下拉框操作常用方法
Nov 09 Javascript
extjs 为某个事件设置拦截器
Jan 15 Javascript
JS定义回车事件(实现代码)
Jul 08 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
Aug 27 Javascript
基于JavaScript实现生成名片、链接等二维码
Sep 20 Javascript
超详细的JS弹出窗口代码大全
Apr 18 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 Javascript
JS闭包可被利用的常见场景小结
Apr 09 Javascript
ES6 Promise对象的含义和基本用法分析
Jun 14 Javascript
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
测试php函数的方法
2013/11/13 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
python的常见命令注入威胁
2013/02/18 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
Python验证码识别的方法
2015/07/10 Python
python实现外卖信息管理系统
2018/01/11 Python
详解python分布式进程
2018/10/08 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Python脚本调试工具安装过程
2021/01/11 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
路政管理专业个人自荐信范文
2013/11/30 职场文书
优秀的毕业生的自我评价
2013/12/12 职场文书
计算机专业职业规划
2014/02/28 职场文书
保险经纪人求职信
2014/03/11 职场文书
档案工作汇报材料
2014/08/21 职场文书
2014年团队工作总结
2014/11/24 职场文书
会议邀请函
2015/01/30 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
教师求职自荐信
2015/03/26 职场文书
公司职员入党自传书
2015/06/26 职场文书
领导视察通讯稿
2015/07/18 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers