js之數組

計算5名同學的平均分

<script>
    var a1,a2,a3,a4,a5;
    a1 =Number(prompt("請輸入分數"));
    a2 =Number(prompt("請輸入分數"));
    a3 =Number(prompt("請輸入分數"));
    a4 =Number(prompt("請輸入分數"));
    a5 =Number(prompt("請輸入分數"));

    var ave = (a1+a2+a3+a4+a5)/ 5;
    alert(ave);
</script>

這個程序很簡單,但是如果是100人呢,難道要真的要複製100遍?

怎麼解決?顯然需要使用循環。

但是嘗試一下就會發現,循環使用不上,因爲無法去控制變量a1,a2,也就是無法將循環控制變量和變量a1、a2聯繫起來。

var a = [];
var sum= 0;
for(var i=0; i<5; i++){
    a[i] = Number(prompt("請輸入分數"));
    sum += a[i];
}
var ave= sum/ a.length
alert(ave);

這段代碼能夠實現同樣的功能,而且如果是100人的話,只要把循環的條件改爲i<100即可,整個程序的結構和代碼量和人數多少沒有關係。

爲什麼和人數沒有關係?因爲和循環結合起來了。

爲什麼能和循環結合起來呢? 因爲我們把變量的表示方式改變了,即名稱+序號的方式(a[0]、a[1]……),那麼序號是可以用循環變量去控制。

數組的定義與元素訪問

怎麼用呢?

定義有三種方式“”

(1)var a = [];

(2) var a = new Array();

(3) var a = [0,0,0];

訪問元素:數組名+下標

a[0]  a[3]

需要注意的是下標從0開始。

所以在使用的時候需要注意越界問題,比如5個元素的數組,那麼它的下標範圍爲[0,4],不包括5,5已經越界了。

數組的本質:一組變量的集合,或者說是一組內存單元。只不過對於變量的表示方式使用的是數組名+下標的方式。

數組的常用屬性和方法:

數組的屬性:

length:

1).告訴我們數組的長度:數組名.length

2).通過該屬性可以改變數組的長度

 

數組的常用方法:

(1)unshift:在數組的頭部添加元素,返回值返回的是新數組的長度。

   shift:刪除數組頭部的元素,返回值是刪除的頭部元素。

(2)indexOf:查找在數組中重複出現的元素第一次出現的位置,返回值是該元素的下標。

   lastIndexOf:查找數組中重複出現的元素最後一次出現的位置,返回值是該元素的下標。

(3)push:在數組的尾部插入元素,返回值是添加元素後數組的長度。

   pop:從數組的尾部刪除最後一個元素,返回值是刪除的元素。

(4)slice(開始位置的下標,結束位置的下標):提取數組中指定連續的子數組。前包括,後不包括。

(5)splice(開始刪除位置的下標,要刪除元素的長度,要選擇插入或替換的內容),splice有“剪接”的含義。前面兩個參數定義“剪”的部分,第三個參數定義“接”的部分,經過不同的參數組合就可以實現以下三個功能:

①刪除操作:刪除數組中指定的任意元素

②插入操作:在數組中指定位置插入元素

③替換操作:在數組中替換指定位置的元素。

(6)reverse:將數組中的元素,反序輸出。在原數組的基礎上進行反序輸出,不會重新創建新數組。

(7)map:原數組的映射,經過函數的加工,返回給一個新數組。

一般我們傳遞的參數都是數值、字符串等類型的數據,有些時候可能需要傳遞一個函數,那麼如何去傳遞一個函數呢?

var a = [2,4,6,8];
var b =a.map(fun);

function fun (value, index, self) {
    return value*value;

}


我們可以將以上內容簡寫爲:

var a = [2,4,6,8];
var b =a.map(function (value, index, self) {
    return value*value;
});

這就是匿名函數

發佈了46 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章