要努力啊小汤!
当你的才华还不足以撑起你的野心时,你应该静下心学习!!!

数组

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把数组放到对象上】

var arr = Array.prototype.slice.call(arrayLike);

Array.prototype.forEach.call(arrayLike, print);

// 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]);
  }
}
比原生foreach慢,先转为数组,再调用

 

var arr = Array.prototype.slice.call('abc');
arr.forEach(function (chr) {
  console.log(chr);
});
// a
// b
// c

 

 

 

数组 添加元素后值改变

字符串遍历:Array.prototype.forEach.call

 

posted on 2020-11-03 14:58  做一个有趣的妞儿  阅读(39)  评论(0)    收藏  举报