数组
2020-11-03 14:56:42
本质上,数组是一个特殊的对象;
typeof 数组 =====返回的类型是object【运算符认为数组是一个对象】
delete删除的是值,不是位置;
length属性:返回数组成员数量
清空数组的方法:
var arr = [ 'a', 'b', 'c' ];
arr.length = 0;
arr // []
人为设置的值为不合法的值,会报错
// 设置负值 [].length = -1 // RangeError: Invalid array length // 数组元素个数大于等于2的32次方 [].length = Math.pow(2, 32) // RangeError: Invalid array length // 设置字符串 [].length = 'abc' // RangeError: Invalid array length
in位置运算符:检查某个键名是否存在【数值自动转为字符串】
var arr = [ 'a', 'b', 'c' ]; 2 in arr // true
4 in arr // false
通俗点就是说数组4里面这个位置有没有值
for...in循环遍历输出:【不推荐使用】
var a = [1, 2, 3]; for (var i in a) { console.log(a[i]); } // 1 // 2 // 3
推荐使用for循环或while循环,for...in循环输出非整数键(比如a.foo = true;
输出foo)
数组和对象的区别
push方法 | length | ||
对象 | × | 添加元素后值不变 |
slice+call方法将对象---数组【slice对象转换为数组+call把数组放到对象上】
// forEach 方法 function logArgs() { Array.prototype.forEach.call(arguments, function (elem, i) { console.log(i + '. ' + elem); }); } // 等同于 for 循环 function logArgs() { for (var i = 0; i < arguments.length; i++) { console.log(i + '. ' + arguments[i]); } }
|
数组 | √ | 添加元素后值改变 |
字符串遍历:Array.prototype.forEach.call
你的代码量决定了你的薪资水平!