var arr = ["Huawei","China","Mirror"];
同時JavaScript也支持 new Array 建立數組。可是建議使用上面的文本方式建立數組javascript
var name = arr[0]; // name = Huawei
ps:數組的索引是從 0 開始的html
var arr = ["Huawei","China","Mirror"]; document.getElementById("demo").innerHTML = arr ; // 結果輸出: Huawei,China,Refueling
typeof arr_name 會返回 objectjava
JavaScript的數組其實是一種對象的表現,可是數組
數組最好仍是以數組方式來描述app
二者的區別:dom
數組元素能夠是對象:函數
因爲數組的特色,數組是特殊類型的對象測試
故此,能夠在數組中存放不一樣類型的變量spa
能夠數字、字符串、函數、函數……code
並且,還能夠在數組中存儲另外一個數組
var arr = ["Huawei","China","Mirror"]; arr.length; // 結果:返回 3
因爲arr索引是從零開始,而length數目計算是從1開始的
因此length-1 === 數組最後一個元素的下標索引
var arr[arr.length - 1] ; // 結果返回 Mirror
var arr = ["Huawei","China","Mirror"]; var text = "<ul>"; for(i = 0 ; i < arr.length-1 ; i ++){ text += "<li>" + arr[i] + "</li>"; }
var arr = ["Huawei","China","Mirror"]; var text ; text = "<ul>"; arr.forEach(myArr); text += "</ul>"; function myArr(value){ text += "<li>" + value + "</li>"; }
var arr = ["Huawei","China","Mirror"]; arr.push("Refueling");
arr[arr.length] = ("Refueling"); // 或者 arr[x] = ("Refueling");
var arr = []; arr[0] = "Huawei"; arr[1] = "China"; arr[2] = "Refueling"; var x = arr.length ; //返回 3 var y = arr[0]; //返回 Huawei
var arr = []; arr["A"] = "Huawei"; arr["B"] = "China"; arr["C"] = "Refueling"; var x = arr.length ; // 返回 0 var y = arr[0] ; //返回 undefined
在JavaScript中,數組 使用數字索引
在JavaScript中,對象使用命名索引
對象和數組的不一樣應用
若是但願元素名爲字符串(文本),則使用對象
若是但願元素名數字,則使用數組
避免 new Array()
沒有必要使用內建數組構造器 new Array()
var arr = ["Huawei","China","Mirror"]; document.getElimentById("demo").innerHTML = arr.toString(); // 結果:Huawei,China,Mirror
var arr = ["Huawei","China","Mirror"]; document.getElimentById("demo").innerHTML = arr.join("&"); // 結果:Huawei&China&Mirror
var arr = ["Huawei","China","Mirror"]; arr.pop(); //刪除最後一個元素 Mirror
pop():返回被刪除的那個數
var arr = ["Huawei","China","Mirror"]; arr.push("Refueling"); // 添加 Refueling到數組中,並返回最新數組的長度
push():返回新數組的長度
var arr = ["Huawei","China","Mirror"]; arr.shift(); // 返回 Huawei
shift() 返回被移出(刪除)的元素
var arr = ["Huawei","China","Mirror"]; arr.unshift("Refueling"); // 返回 新的數組長度 5
unshift():返回新的數組長度
var arr = ["Huawei","China","Mirror"]; delete arr[0]; //把 "Huawei" 改成 undefined
不建議使用delete運算符,可使用pop() 或 shift() 代替
緣由:後者的數組方法,會自動抹除數組索引,而delete則會保留索引並致使空洞
var arr = ["Huawei","China","Mirror"]; arr.splice(2,0,"Refueling","Hello");
第一個參數:定義添加新元素的位置
第二個參數:定義應刪除多少元素
其他參數:定義要添加的新元素
var arr = ["Huawei","China","Mirror"]; arr.splice(0,1); // 刪除 arr 數組中的第一個元素
第一個參數:定義新元素添加的元素
第二個參數:定義刪除多個元素
其他參數: 被忽略,沒有新元素添加
splice()會返回被刪除的元素
而原數組的內容就會被修改
var str1 = ["Huawei","Refueling"]; var str2 = ["China","Refueling"]; var myStr = str1.concat(str2) ; // 鏈接 str1 和 str2
Array1.concat(Array2,……)
一樣的,concat()也能夠和數值合併
array1.concat([值,……])
var arr = ["Huawei","China","Refueling","Hello","World"]; var array = arr.slice(1); var array = arr.slice(1,3);
第一個元素:裁剪的開始位置
第二個元素:裁剪的結束位置
若第二個元素被省略,
則從開始的位置截取到數組的最後一個元素
var arr = ["Huawei","China","Refueling","Hello","World"]; arr.sort(); // 結果:China,Hello,Huawei,Refueling,World
var arr = ["Huawei","China","Refueling","Hello","World"]; arr.reverse()
var arr = ["Huawei","China","Refueling","Hello","World"]; arr.sort(); arr.reverse();
比較函數目的是定義另外一種排序順序
比較函數應該返回一個負、零或正值,這取決於參數
function(a,b){return a-b}
當 sort() 函數比較兩個值時,會將值發送到比較函數,並根據返回的值,對這些值進行排序。
實例:
當比較 40 和 100 時,sort() 方法會調用比較函數 function(40,100)
該函數計算 40 - 100 ,而後返回一個 負值
排序函數將40排序爲比100更低的值
<div> <button onclick="myFunction1()">字母順序</button> <button onclick="myFunction2()">數字順序</button> <p id = "demo"></p> </div> <script> var points = [40,100,1,5,25,10] ; document.getElementById("demo").innerHTML = points ; function myFuntion1() { points.sort(); document.getElementById("demo").innerHTML = points ; } function myFuntion2() { points.sort(function(a,b){return a - b}) ; document.getElementById("demo").innerHTML = points ; } </script>
var points = [40,100,1,5,25,10] ; points.sort(function(a,b){return 0.5 - Math.random()});
原理就是:0.5減去一個隨機數
function myArrayMax(arr) { return Math.max.apply(null,arr); }
Math.max.apply([1,2,3]) === Math.max(1,2,3)
function myArrayMin(arr) { return Math.min.apply([null,arr]); }
Math.min.apply([1,2,3]) === Math.min(1,2,3)
function myArrayMax(arr) { var len = arr.length ; var max = -Infinity ; //最小的負值 while (len --) { if (arr[len] > max) { max = arr[len] ; } } return max ; }
function myArrayMin(arr) { var len = arr.length ; var min = Infinity ; while (len --) { if (arr[len] < min) { min = arr[len]; } } return min ; }
var cars = [ {name:"HUAWEI",age:"good"}, {name:"MI",age:"where"}, {name:"Java",age:"No:1"} ];
即便對象擁有不一樣數據類型的屬性,sort()方法仍然能夠對數組進行排序
解決方法就是利用比較函數對比屬性值
cars.sort(function(a,b){return a.year - b.year});
經過比較函數,將屬性中的屬性值內容進行對比
var txt = "" ; var number = [45,4,9,16,25] ; numbers.forEach(myFunction) ; function myFunction (value , index , array) { txt += value + "<br>" ; }
上述代碼的做用:數組中每一個值傳遞並調用函數
var number1 = [45,4,9,16,25] ; var number2 = number1.map(myFunction) ; function myFunction(value,index,array){ return value * 2 ; // 數組中的元素 * 2 並返回 }
var number = [45,4,9,16,25] ; var over18 = number.filter(myFunction) ; function myFunction(value , index , array){ return value > 18 ; // 返回大於18的數組元素並組成一個新數組 }
var number = [45,4,9,16,25] ; var sum = number.reduce(myFunction) ; function myFunction(total , value , index , array){ return total + value ; }
reduce():方法可以接收一個初始值
var number = [45,4,9,16,25] ; var allOver18 = number.every(myFunction) ; function myFunction(value , index , array) { return value > 18 ; }
var number = [45,4,9,16,25] ; var someOver18 = number.some(myFunction) ; function myFunction(value , index , array) { return value > 18 ; }
var number = [45,4,9,16,25] ; var a = number.indexOf(45);
array.indexOf(item,start)
item:必須,要檢索的項目
start:可選,檢索的起點
未找到項目,返回 -1
若是搜索的內容出現屢次,則返回第一個出現的位置
var number = [45,4,9,16,25] ; var first = number.find(myFunction) ; function myFunction(value , index , array) { return value > 18 ; }
var number = [45,4,9,16,25] ; var first = number.findIndex(myFunction) ; function myFunction(value , index , array){ return value > 18 ; }