JS中的數組

ihcx2554 8年前發布 | 7K 次閱讀 JavaScript開發 JavaScript

JS中的數組和其他語言不同的是一個數組可以保存多個類型的值,比如數組中第一個位置保存一個字符類型的值,第二個可以保存數值型的值,第三個則可以保存一個對象。

聲明方式:

var color = new Array();

var color = new Array(20);   

var color = new Array("red","blue","green");

另外數組中的length屬性不是只讀的,可以通過這個屬性設置數組的長度。

例如:

var color = new Array("red","blue","green");

color[color.length]="black"; //在位置3添加一種顏色

color[color.length]="brown";//在位置4添加一種顏色

這樣依次在最后的位置添加元素,對于跨長度添加也是可以的,例如在100的位置添加一個元素,但這個區間沒有賦值的元素都會為undefined

檢測對象是否為數組

if (Array.isArray(value)) {     }

數組的tostring()、valueOf()、join()方法

這些方法會將數組內每項元素用逗號分隔開

color.toString(); //red,blue,green

color.valueOf();//red,blue,green

color.join("|"); //red|blue|green  Join方法,表示用哪種符號分隔數組元素

另外,需要注意如果數組中的元素存在undefined或null時,則上面的方法返回的是空字符串。

Push、pop、shift方法

color.push("white", "org") ;

在數組末尾添加兩個元素,push里的數量不固定,可隨意,另外這個方法有一個返回值,這個返回值,是數組的length

color.pop();

獲取數組的最后一個元素。

color.shift() 

獲取第一項,并移除第一項

排序

數組中提供了兩個默認的排序方法,分別是reverse()和sort()

var values=[0,1,5,10,15]

reverse()方法是反轉數組的順序,按數組的下標倒序顯示。values.reverse() //15,10,5,1,0

sort()方法是將內部的值進行tostring后進行排序。values.sort() //0,1,10,15,5

顯然上面的排序是有錯誤的,因為比較的是字符串類型的所以會認為5比1大。

如果想得到正確的結果,可以向這個方法傳遞一個比較函數作為參數。

比較函數接收兩個參數,如果第一個參數應該位于第二個之前,則返回一個負數,如果相等,則返回0,如果第一個位于第二之后,則返回正數,例如:

  function compare(value1, value2) {



                if (value1 < value2) {

                    return -1

                } else if (value1 > value2) {

                    return 1;

                } else {

                    return 0;

                }

            }
values.sort(compare); 

這樣就可以正確排序了。如果逆序的話,則適當修改返回值,就可以。

如果只是數值類型的比較,則代碼更為簡單。

  function compare(value1,value2){

                return value1-value2

            }

concat、slice 方法

concat方法可以進行數組之間的連接,也可添加新元素

var colors = ["red", "green", "blue"];

var colors2 = colors.concat("yellow", ["black", "brown"]); //red,green,blue,yellow,black,brown

slice方法接收兩個參數,起始位置和操作的個數,他可以進行刪除、插入、替換,slice始終都會返回一個數組,該數組包含從原始數組中刪除的項,如果沒有任何項,則返回一個空數組。

var colors = ["red", "green", "blue"];

var removed = colors.splice(0, 1); //刪除第一項,并red

var removed = colors.splice(1, 0, "yellow", "orange");//從第一個位置插入兩項,返回空

var removed = colors.splice(1, 1, "red", "purple"); //刪除第二項,插入兩項,返回blue

位置方法 indexOf和lastIndexOf

這兩個方法都接收兩個參數,分別是要查找的項和查找的起點位置。

var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

numbers.indexOf(4); //返回3

numbers.lastIndexOf(4)  //返回5 從末尾開始查找

如果這兩個方法沒有找到搜索項,則返回-1。

迭代方法

var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

every() 如果該函數的每一項都返回true ,則返回true

var everyResult = numbers.every(function (item, index, array) {

                return (item > 2);

            }); //返回false

filter() : 返回函數中滿足條件的元素組成的數組。

var filterResult = numbers.filter(function (item, index, array) {

                return (item > 2);

            }); // 返回  [3,4,5,4,3]

forEach() : 循環遍歷數組,這個方法沒有返回值。

numbers.forEach(function (item, index, array) {

                //執行某些操作。

            });

map() : 返回每次調用的結果組成的數組。

var mapResult = numbers.map(function (item, index, array) {

                return (item * 2);

            });  //[2,4,6,8,10,8,6,4,2]

some() : 如果函數中,有任意一項返回true ,則返回true

var someResult = number.some(function (item, index, array) {

                return (item > 2);

            }); //true

歸并方法

歸并方法有reduce()和reduceRight()兩個方法,reduce是數組的第一項開始遍歷到最后,reduceRight是從最后一項開始,遍歷到第一項。

這兩個函數分別接受4個參數:前一個值,當前值,項的索引和數組對象。

  var values=[1,2,3,4,5]

  var sum = values.reduce(function (prev, cur, index, array) {

       return prev + cur;

  }); //返回15

來自: http://www.cnblogs.com/y8932809/p/5381665.html 

 本文由用戶 ihcx2554 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!