您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“JavaScript中數組對象的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“JavaScript中數組對象的示例分析”這篇文章吧。
數組的分類**
1、二維數組,二維數組的本質是數組中的元素又是數組。
var arr = [[1,2],[a,b]];alert(arr[1][0]); //a 第2列第1行所在的元素
2、稀疏數組
稀疏數組是包含從0開始的不連續索引的數組。在稀疏數組中一般length屬性值比實際元素個數大(不常見)
舉例
var a=["a",,"b",,,,"c",,];
數組對象屬性
屬性 | 作用 |
---|---|
length 屬性 | 表示數組的長度,即其中元素的個數 |
prototype 屬性 | 返回對象類型原型的引用 |
constructor 屬性 | 表示創建對象的函數 |
1.length屬性:
alert(arr.length); //顯示數組的長度10arr.length=15; //增大數組的長度,length屬性是可變的alert(arr.length); //顯示數組的長度已經變為15
2.prototype 屬性
prototype 屬性返回對象類型原型的引用。prototype 屬性是object共有的。
objectName.prototype
objectName 參數是object對象的名稱。
說明:用 prototype 屬性提供對象的類的一組基本功能。 對象的新實例“繼承”賦予該對象原型的操作。
對于數組對象,用以下例子說明prototype 屬性的用途。
給數組對象添加返回數組中最大元素值的方法。要完成這一點,聲明一個函數,將它加入 Array.prototype, 并使用它。
function array_max( ){ var i, max = this[0]; for (i = 1; i < this.length; i++){ if (max < this[i]) max = this[i]; } return max;}Array.prototype.max = array_max;var x = new Array(1, 2, 3, 4, 5, 6);var y = x.max( );
3.constructor 屬性
constructor 屬性表示創建對象的函數。
object.constructor //object是對象或函數的名稱。
說明:constructor 屬性是所有具有prototype 的對象的成員。它們包括除 Global 和 Math對象以外的所有JScript固有對象。constructor屬性保存了對構造特定對象實例的函數的引用。
例如:
x = new String("Hi");if (x.constructor == String) // 進行處理(條件為真)。//或function MyFunc {// 函數體。}y = new MyFunc;if (y.constructor == MyFunc) // 進行處理(條件為真)。
Array的對象方法
說明:部分是ECMAScript5的新特性(IE678不支持)
方法 | 作用 |
---|---|
concat() | 連接兩個或者更多的數組,并返回結果 |
join() | 將數組的元素組起一個字符串 |
pop() | 刪除并返回數組的最后一個元素 |
push() | 數組末尾添加一個或者多個元素,返回新的長度 |
reverse | 顛倒數組中元素的順序 |
shift() | 刪除并返回數組的第一個元素 |
slice() | 從某個已有的數組返回選定的元素 |
sort() | 對數組元素排序 |
splice() | 刪除元素,并向數組添加新元素 |
toSource() | 返回該對象的源代碼 |
toString() | 把數組轉化為字符串并返回結果 |
toLocalString() | 把數組轉化為本地元素并返回結果 |
unshift | 向數組開頭添加一個或者更多的元素,并返回新的長度 |
valueof() | 返回數組對象的原始值 |
forEach() | 遍歷數組對象 |
map() | 對數組做一些映射 |
filter() | 過濾 |
every() | 檢查判斷 |
some() | 檢查判斷 |
reduce() | 兩兩執行一定的操作 |
reduceRight() | 從右到左執行操作 |
indexOf() | 數組檢索查找某個元素 |
Array.isArray([]) | 判斷是否是數組 |
主要對一些新特性進行講解
concat
concat作用是拼接數組,需要注意的是也可以把一個數組元素作為拼接的元素,如果這樣的話,數組會被拉平,再和其它的元素拼接起來成為新的數組,但是不會被拉平兩次,concat不會修改原數組。
例如:
var arr=[1,2,3,4,5];arr.concat([10,11],13);//[1,2,3,4,5,10,11,13]arr.concat([1,[2,3]]);//[1,2,3,4,5,1,[1,3]]
slice
slice(a,b)a和b可以取負數,表示從a位置開始截取到b位置的一段數組,是一個左閉右開的區間,a和b可以取負數,如果是負數代表倒數第a/b個元素
var arr=[1,2,3,4,5];arr.slice(1,3);//[2,3]arr.slice(1);//[2,3,4,5]arr.slice(1,-1);//[2,3,4]arr.slice(-4,-3);//[2]
splice
splice刪除元素并向數組添加新元素
object.splice(a)從左邊開始刪除a個元素
object.splice(a,b)從a位置開始截取其中的b個元素
object.splice(a,b,c,d)從a位置開始截取b個元素,并將c和d或者更多的元素插入原數組
需要注意的是splice會修改原數組
var arr=[1,2,3,4,5];arr.splice(2);//[3,4,5]arr;//[1,2];原數組被修改了var arr=[1,2,3,4,5];arr.splice(2,2);//[3,4]arr;//[1,2,5];var arr=[1,2,3,4,5];arr.splice(1,1,‘a’,‘b’);//[2]arr;//[1,"a","b",3,4,5];
foreach
foreach()函數從頭到尾把數組遍歷一遍。有三個參數分別是:數組元素,元素的索引,數組本身
var arr = [1, 2, 3, 4, 5];arr.forEach(function(x, index, a){//分別對應:數組元素,元素的索引,數組本身 console.log(x + '|' + index + '|' + (a === arr));});// 1|0|true// 2|1|true// 3|2|true// 4|3|true// 5|4|true
reduce()
Array的reduce()把一個函數作用在這個Array的[x1, x2, x3…]上,這個函數必須接收兩個參數,reduce()把結果繼續和序列的下一個元素做累積計算,其效果就是:
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
var arr = [1, 2, 3];var sum = arr.reduce(function(x, y) { return x + y}, 0); //參數 0是可選的,如果寫了參數0那第一次傳遞的兩個值就是0和1如果不寫第一次傳遞的就是數組的前兩個值,計算結果是6arr; //[1, 2, 3]arr = [3, 9, 6];var max = arr.reduce(function(x, y) { console.log(x + "|" + y); return x > y ? x : y;});// 3|9// 9|6max; // 9
數組和一般對象的比較
數組/一般對象 | |
---|---|
相同點 | 都可以繼承,對象不一定是數組,都可以當做對象添加屬性 |
不同點 | 數組自動更新length按索引訪問數組比訪問一般對象屬性明顯迅速。數組對象繼承Array.prototype上的大量數組操作方法 |
數組和字符串的比較
數組 /字符串 | |
---|---|
相同點 | 字符串是數組的一種 |
不同點 | 字符串是不可變的數組,字符串沒有數組的方法 |
以上是“JavaScript中數組對象的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。