/*
JS没有像其他语言数组一样的数据结构,它提供了一种拥有一些类数组特性的对象
数组字面量:
JS允许数组包含任意混合类型的值
*/
var someArray = [
1,
"alpha",
true, {
name: "obj"
},
function() {
console.log("function");
}
];
console.log(someArray);
//输出:
//[1, "alpha", true, Object, function]
//----------------------------------------------------------------------------------------
/*
长度:
每个数组都有一个length属性,如果用大于或等于当前length的数字作为下表来存储一个元素,那么length值将会被增大以容纳新元素,不会发生数组越界错误
可以直接设置length的值,设置更大的length不会给数组分配更多的空间,而吧length设小将导致所有下标大于等于新length的属性将被删除
*/
var names = ["Tom", "Jerry", "Edison", "Howard", "Kobe"];
console.log(names);
//输出:
//["Tom", "Jerry", "Edison", "Howard", "Kobe"]
names.length = 7;
console.log(names);
//输出:
//["Tom", "Jerry", "Edison", "Howard", "Kobe"]
names.length = 3;
console.log(names[3]);
console.log(names);
//输出:
//undefined
//["Tom", "Jerry", "Edison"]
//----------------------------------------------------------------------------------------
/*
删除:
delete运算符可以用来从数组中移除元素,但不幸的是那样会在数组中留下一个空洞
JS中有个splice方法,可以删除一些元素并将它们替换为其他元素
第一个参数时数组中的一个序号
第二个参数时要删除的元素个数
*/
var array4Delete = ["Tom", "Jerry", "Edison", "Howard", "Kobe"];
array4Delete.splice(2, 1);
console.log(array4Delete);
//输出:
//["Tom", "Jerry", "Howard", "Kobe"]
//----------------------------------------------------------------------------------------
/*
枚举:
for in语句可以用来遍历一个数组的所有属性,但无法保证属性的顺序,而且可能会从原型链中获得属性
*/
//----------------------------------------------------------------------------------------
/*
容易混淆的地方:
当属性名是小而连续的整数时,使用数组,否则使用对象
typeof运算符判定数组为'object'
应该使用如下方法进行判定:Object.prototype.toString.apply(value) === '[Object Array]'
*/
console.log(typeof []);
//输出:
//object
console.log(Object.prototype.toString.apply([]) === '[object Array]');
console.log(Object.prototype.toString.apply({}) === '[object Array]');
//输出:
//true
//false
//----------------------------------------------------------------------------------------
/*
指定初始值:
当访问一个不存在的元素,得到的值为undefined
*/
《JavaScript语言精粹》--第6章:数组
最新推荐文章于 2022-12-28 19:52:59 发布