一、區別:
數組表示有序數據的集合,對象表示無需數據的集合。如果數據順序很重要的話,就用數組,否則就用對象的好。
數組的數據沒有名稱'name' 對象的數據有名稱 'name' 但是在很多編程語言中有個叫關聯數組的,這種數組中的數據是有名稱的。
二、如何區分array和object:
var obj = {"k1":"v1"};
var arr = [1,2];
1:通過isArray方法
使用方法: Array.isArray(obj); //obj是檢測的對象
2:通過instanceof運算符來判斷
instanceof運算符左邊是子對象(待測對象),右邊是父構造函數(這里是Array),
具體代碼:
console.log("對象的結果:"+(obj instanceof Array));
console.log("數組的結果:"+(arr instanceof Array));
3::使用isPrototypeOf()函數
原理:檢測一個對象是否是Array的原型(或處於原型鏈中,不但可檢測直接父對象,還可檢測整個原型鏈上的所有父對象)
使用方法: parent.isPrototypeOf(child)來檢測parent是否為child的原型;
isPrototypeOf()函數實現的功能和instancof運算符非常類似;
具體代碼:
Array.prototype.isPrototypeOf(arr) //true表示是數組,false不是數組
4:利用構造函數constructor
具體代碼:
console.log(obj.constructor == Array) //false
console.log(arr.constructor == Array) //true
5:使用typeof(對象)+類型名結合判斷:
具體代碼:
function isArrayFour(arr) {
if(typeof arr === "object") {
if(arr.concat) {
return 'This is Array'
} else {
return 'This not Array'
}
}
}
console.log(typeof(obj)) //"object"
console.log(typeof(arr)) //"array"
console.log(isArrayFour(obj)) //This not Array
console.log(isArrayFour(arr)) //This is Array
