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 相关文章推荐
js小技巧--自动隐藏红叉叉
Aug 13 Javascript
javascript高级学习笔记整理
Aug 14 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
May 03 Javascript
分享五个有用的jquery小技巧
Oct 08 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
总结jQuery插件开发中的一些要点
May 16 Javascript
JS中的数组方法笔记整理
Jul 26 Javascript
基于jQuery实现仿微博发布框字数提示
Jul 27 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
Mar 05 Javascript
vue cli3.0 引入eslint 结合vscode使用
May 27 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
vue绑定数字类型 value为数字的实例
Aug 31 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
PHP服务器页面间跳转实现方法
2012/08/02 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
Convert Seconds To Hours
2007/06/16 Javascript
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
js轮播图之旋转木马效果
2020/10/13 Javascript
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
python flask实现分页效果
2017/06/27 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
Python Grid使用和布局详解
2018/06/30 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python中文编码知识点
2019/02/18 Python
python3安装crypto出错及解决方法
2019/07/30 Python
centos7之Python3.74安装教程
2019/08/15 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
毕业自我鉴定范文
2013/11/06 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers