Javascript数组Array基础介绍
来源: 阅读:583 次 日期:2016-07-20 15:46:40
温馨提示: 小编为您整理了“Javascript数组Array基础介绍”,方便广大网友查阅!

Javascript,一门神奇的语言,它的数组也同样独特。我们要去其糟粕,取其精华,把常用的最优实践总结出来。如有错误,请指出。

javascript数组是一种类数组的对象,拥有对象的特性。当属性名是小而连续的整数时,应该使用数组,否则,使用对象。

数组来源

所有的数组都是Array构造出来的,我们来测试一下constructor这个属性。

var arr = [];

arr.constructor === Array; // true

arr.constructor === Array.prototype.constructor; // true

创建数组

//数组字面量方式

var arr1 = [1, 2, 3]; // [1,2,3]

//构造函数方式

var arr2 = new Array();    // [] 空数组

var arr3 = new Array('9');   // ["9"] 一个字符串元素

var arr4 = new Array(9);    // [] 数组长度length为9

var arr5 = new Array([9]);   // [[9]] 相当于二维数组

var arr6 = new Array(1, 2, 3); // [1, 2, 3]

var arr7 = new Array(1, function f(){}, {o : 6}, null,undefined,true);

// 数组可以存储任意混合数据类型

由于arr4的方式,当只有一个数字参数传递到Array的构造函数中,构造函数会返回设置了length属性的空数组。所以推荐使用数组字面量方式,短小而简洁。

检测对象是否为数组

var arr1 = [1, 2, 3];

typeof(arr1); // object

众所周知,typeof不能正确检测类型。

arr1 instanceof Array; //true

instanceof 方式在一个网页内是没有问题,一旦嵌套其他网页,便存在两个全局作用域,互相调用时的检测就会出问题。

Array.isArray(arr1); // true

Array.isArray() 是ECMAScript5 新增的方法,没有缺陷。唯一的问题是ie8浏览器不支持,ie9浏览器在严格模式下也不支持。

Object.prototype.toString.apply(arr1).slice(8, -1); // Array

最后一种方式是检测类型的最好方法。

数组长度

数组的length也是它的属性,增大length也不会发生越界错误。

length值等于数组最大的整数属性名加1。

var arr1 = [];

arr1[9] = 1; // 长度为10,只包含一个元素的数组

设小值将将会把属性名大于等于length的属性删除。

如果将length值设为0,相当于清空数组。

var arr2 = [1, 2, 3, 4, 5];

arr2.length = 3; // [1, 2, 3]

arr2.length = 0; // []

数组遍历

遍历数组不要使用for in循环遍历数组,因为for in会遍历原型链上的所有属性,但我们并不需要这么多。推荐使用for循环的方式。

var arr1 = [1, 2, 3];

arr1.test = 9;

//for in 方式

for(var prop in arr1){

  cosole.log(prop, arr1[prop]);

}

// 输出如下

// 0 1

// 1 2

// 2 3

// test 9

//for循环方式

for(var i = 0, len = arr1.length; i < len; i++){

  console.log(arr1[i]);

}

//输出如下

// 1

// 2

// 3

我们看到for in方式多出了一个test值,可以使用hasOwnProperty函数排除,但那会比for循环的方式慢很多。

缓存数组长度很有必要的一步,每次访问是有性能开销的(最新的浏览器在这方面做了优化)。

小结

简单介绍了Array的相关基础知识,到这里也算是能对Array有更全面的理解了。下一篇介绍Array的方法。

Javascript虽然有很多不太容易弄懂的地方,随着长时间的学习,我已经慢慢地爱上它了(因为现在没有妹子让我爱)。

更多信息请查看网络编程
手机网站地址:Javascript数组Array基础介绍
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map