您好,登錄后才能下訂單哦!
這篇文章主要講解了“JavaScript關聯數組、數組和對象的區別是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JavaScript關聯數組、數組和對象的區別是什么”吧!
關聯數組
很多編程元素支持命名索引的數組。
具有命名索引的數組被稱為關聯數組(或散列)。
JavaScript 不支持命名索引的數組。
在 JavaScript 中,數組只能使用數字索引。
實例
var person = [];
person[0] = "Bill";
person[1] = "Gates";
person[2] = 62;
var x = person.length; // person.length 返回 3
var y = person[0]; // person[0] 返回 "Bill"
警告!
假如您使用命名索引,JavaScript 會把數組重定義為標準對象。
之后,所有數組的方法和屬性將產生非正確結果。
實例:
var person = [];
person["firstName"] = "Bill";
person["lastName"] = "Gates";
person["age"] = 62;
var x = person.length; // person.length 將返回 0
var y = person[0]; // person[0] 將返回 undefined
數組和對象的區別
在 JavaScript 中,數組使用數字索引。
在 JavaScript 中,對象使用命名索引。
數組是特殊類型的對象,具有數字索引。
何時使用數組,何時使用對象?
JavaScript 不支持關聯數組
如果希望元素名為字符串(文本)則應該使用對象。
如果希望元素名為數字則應該使用數組。
避免 new Array()
沒有必要使用 JavaScript 的內建數組構造器 new Array()。
請使用 [] 取而代之!
下面兩條不同的語句創建了名為 points 的新的空數組:
var points = new Array(); // 差
var points = []; // 優
下面兩條不同的語句創建包含六個數字的新數組:
var points = new Array(40, 100, 1, 5, 25, 10); // 差
var points = [40, 100, 1, 5, 25, 10]; // 優
new 關鍵詞只會使代碼復雜化。它還會產生某些不可預期的結果:
var points = new Array(40, 100); // 創建包含兩個元素的數組(40 和 100)
假如刪除其中一個元素會怎么樣?
var points = new Array(40); // 創建包含 40 個未定義元素的數組!!!
如何識別數組
常見的問題是:我如何知曉某個變量是否是數組?
問題在于 JavaScript 運算符 typeof 返回 "object":
var fruits = ["Banana", "Orange", "Apple", "Mango"];
typeof fruits; // 返回 object
typeof 運算符返回 "object",因為 JavaScript 數組屬于對象。
解決方案 1:
為了解決這個問題,ECMAScript 5 定義了新方法 Array.isArray():
Array.isArray(fruits); // 返回 true
此方案的問題在于 ECMAScript 5 不支持老的瀏覽器。
解決方案 2:
創建您自己的 isArray() 函數以解決此問題:
function isArray(x) {
return x.constructor.toString()。indexOf("Array") > -1;
}
假如參數為數組,則上面的函數始終返回 true。
或者更準確的解釋是:假如對象原型包含單詞 "Array" 則返回 true。
解決方案 3:
假如對象由給定的構造器創建,則 instanceof 運算符返回 true:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits instanceof Array // 返回 true
感謝各位的閱讀,以上就是“JavaScript關聯數組、數組和對象的區別是什么”的內容了,經過本文的學習后,相信大家對JavaScript關聯數組、數組和對象的區別是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。