数组简介
javascript有六大基本数据类型:Number,String,Boolean,Undefined,Null,ES6新增的Symbol,一种复杂数据类型Object。很遗憾,乍一看,我们的数组呢?其实数组是属于Object里的引用型数据结构。
数组:使用单独的变量名来存储一系列的值
数组的值可以不是同一个数据类型,数组的长度可变。
创建数组的基本方式有两种
第一种是使用Array构造函数,如下所示
var colors = new Array("red","blue","yellow")
第二种是使用数组字面量表示法,如下所示
var colors = ["red","blue","yellow"];
判断一个对象是否是数组
typeof可以正确检验除了数组和null的其他类型,
var arr = [];
var n = null;
typeof arr // object
typeof n //object
下面两种:instanceof & constructor属性,在一般情况下也可以作为判断数组依据
console.log(arr instanceof Array);//true
console.log(arr.constructor === Array);//true
使用原型链判断
function isArrayFn (o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
var arr1 = [];
console.log(isArrayFn('111'));// true
使用Array.isArray()方法,此方法部分浏览器没有兼容
var arr = [];
console.log(Array.isArray(arr));//true
最好的写法,定义一个函数 isArrayFn
function isArrayFn (o) {
if(typeof Array.isArray() === "function"){
return Array.isArray(o);
}else{
return Object.prototype.toString.call(o) === '[object Array]';
}
}
var arr = [];
console.log(isArrayFn(arr))//true
伪数组
特点:
1.具有length属性
2.按索引方式存储数据
3.不具有数组的push()、pop()等方法
伪数组无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push()、pop()等方法,但仍可以对真正数组遍历方法来遍历它们。
比如,function内的arguments对象,还有像调用getElementsByTagName, document.childNodes之类的,它们都返回的NodeList对象都属于伪数组,也称为类数组,还有自定义的对象,也属于伪数组。
我们可以通过Array.prototype.slice.call(fakeArray)将伪数组转变为真正的Array对象
var arr1 = {0:'a',1:'b',length:2};//这是一个标准的伪数组对象
console.log(111,isArrayFn(arr1));//false
var arr2 = Array.prototype.slice.call(arr1);
console.log(2222,isArrayFn(arr2));//true
数组方法
先上一张图(有错请提出),后面继续整理各个方法详细使用:
![](https://img.haomeiwen.com/i12994944/2acbb4fed8867ae0.png)
网友评论