JavaScript統計數據處理(1) - 數組


JavaScript是一種廣泛使用網頁編程語言,
在瀏覽器中運用JavaScript技術處理統計數據具有最佳的推廣傳播效果

數組是相同數據類型的數據按一定順序排列的集合,組成數組的數據稱為數組的元素。即數組是在程序設計中,為了處理方便,把具有相同類型的數據按有序的形式組織起來,這些按序排列的同類數據元素的集合稱為數組。

在程序執行過程中,數組具有運行速度快、占用內存少、處理方便等優勢。幾乎所有編程語言中都有數組這一數據類型和相關原生函數。JavaScript(簡稱JS)也不例外,隨着版本的不斷更新發展,JS數組功能也在不斷提升。統計學中不同類型統計數據(截面數據、時間序列和面板數據)都可以通過JS數組來處理。熟練掌握JS數組技術是進入統計數據編程領域的基礎。


導讀

1、數組定義的方式

  [返回]

I、使用構造函數
var aArr = new Array();
var bArr = new Array(10); 
var cArr = new Array("first", "second", "third"); 

II、使用構造函數
var valArr = [23, 45, 41, 87]; 
var strArr = ["first", "second", "third"]; 

掌握JS數組對於網上統計數據處理致關重要。在銀河網絡統計學平台中,一般使用JS數組直接量方式表達和處理統計數據。

2、按靜態方式創建數組

  [返回]

var arr1 = [23,45,67,12,33]; //一維數組
var arr2 = [[23,45,67],[21,12,33],[41,15,36]]; //二維數組(3行x3列)
var arr3 = [[23,45],[21,12,33,12],[41,15,36]]; //二維數組(不規則)
var arr4 = [[23,45],123,[41,[15,36]]]; //混合數組

3、按動態方式創建數組

  [返回]

var arr = [];   //空數組
arr[0] = 10;    //第1個元素為10
arr[1] = 12;
arr[2]=[]       //第3個元素為空數組
arr[2][0]=15;  //第3個數組元素的第1個元素為15
arr[2][1]=20;  //第3個數組元素的第1個元素為15

注:數組是一組有序的數據集合,其索引從0開始

4、數組元素的引用和修改

  [返回]

console.clear();  //清空輸出工作台
var arr = [23,45,67,12,33];
var oVal = arr[1]; //引用:將數組第2個元素45賦值給變量oValue
arr[4] = 50;  //修改:將數組第5個元素33改為50
var arrs = [[23,45],123,[41,[15,36]]];
arrs[0][1]      //45
arrs[1]         //123
var val = arrs[2][1][0]   //15
console.log(val);    //輸出指定變量
arrs[0][1] = 99;
arrs[1] = 100;
arrs[2][1][0] = 50;

5、添加和刪除元素

  [返回]

console.clear();
var arr = [23,45,67,12,33];
arr.push(100,200);        //添加數據到結尾
arr.unshift(200,100);     //添加數據到開始
console.log(arr);
arr.pop();                //刪除原數組最后一項
arr.shift();              //刪除原數組第一項
console.log(arr);
arr = [23,45,67,12,33];
arr.splice(3,0,100,200)  //插入100和200到67后面
console.log(arr);
arr = [23,45,67,12,33];
arr.splice(2,1,100,200) //將100和200插入45之后並刪除67
console.log(arr);

注:splice函數對數組插入並刪除元素。arr.splice(index,howmany,item1,item2,...)中,index:指定新元素插入(或刪除)的位置;howmany:要刪除的項目數量(howmany為 0,則為插入);item1,item2,...:要插入(或刪除)的新元素項

6、數組的截取、拷貝和合並

  [返回]

console.clear();
var arr;
var arr1 = [2,4,7,1,3];
var arr2 = [3,5,6,2,7];
var arr3 = [4,5,1,7,9];
arr = arr1.slice(1,4); 
//以數組的形式返回數組第1-3個元素,注意不包括第4個元素;
//如果省略第2個參數4,將復制第1個參數1之后的所有元素
arr = arr1.slice(0); 
//返回數組的拷貝數組,注意是一個新的數組,不是指向
arr = arr1.concat(arr2,arr3); 
//將多個數組連接為一個數組,返回連接好的新的數組
arr = arr1.concat(arr2,100,200);
arr = arr1.concat(100,200,arr2,200,100);
arr = arr1.concat("myArray",arr2); 
console.log(arr);  

7、一維數組排序

  [返回]

console.clear();
var arr,arr1,arr2,arr3,arr4;
arr = [2,4,7,1,3];
arr1 = arr.slice(0); 
arr2 = arr.slice(0);
arr3 = arr1.sort(); //對數組元素排序(升序)
arr4 = arr2.reverse(); //反轉元素(最前的排到最后、最后的排到最前)
console.log(arr3.reverse());  //輸出arr3的倒序
var arr5=["George","John","Thomas","James","Adrew","Martin"];
arr5.sort(); //直接按英文字母順序排序
console.log(arr5);
//兩個比較的元素分別為a, b
var arr = [12,21,24,32,45,32,12,32,43];
//升序
arr.sort((a, b) => {
    return a - b
})
console.log(arr)
//降序
arr.sort((a, b) => {
    return b - a
})
console.log(arr)
//亂序
arr.sort((a, b) => {
    return Math.random()*2 - 1;
})
console.log(arr)

注:arrNew = arrOld.sort()這行代碼運行后,數組arrOld同時被排序,原數組的結構被打亂。為了保留原數組,可先用這行代碼arrCopy = arrOld.slice(0)將數組arrOld備份到數組arrCopy中保留。arrNew = arrOld.reverse()同理。

8、數組常用方法總結

  [返回]

console.clear();
var arr, str;
var arr1 = [2,4,7,1,3];
var arr2 = [2,9,6];
var arr3 = [3,6,5,3];
arr = arr1.concat(arr2,arr3);  //連接兩個或更多的數組,返回新數組
arr = arr1.slice(1,4);  //按指定起始下標返回數組片段
str = arr1.toString();  //把數組轉換為字符串
str = arr1.join(":");   //返回指定分隔符的字符串
arr1.pop();  //刪除數組最后一個元素
arr1.push(9,9,9);  //向數組的末尾添加一個或更多元素
arr1.reverse();  //顛倒數組中元素的順序
arr1.sort();  //對數組的元素進行正序排序
arr1.shift();  //刪除第一個元素並返回數組
arr1.unshift(8,8,8);  //向數組的開頭添加一個或更多元素
arr1.splice(1,2,7,7); //刪除元素,並向數組添加新元素
console.log(arr); 

最后需要強調一下,JS數組的屬性不多,最常用的設length屬性,即返回數組元素總數。樣例代碼如下:

console.clear();
var arr, str;
var arr1 = [2,4,7,1,3];
var arr2 = [2,9,6];
console.log(arr1.length);   //5
console.log(arr2.length);   //3

本文只介紹了JS數組的基本用法,當我們循序學完函數、對象等知識后,“數組進階”還將進一步介紹JS數組的其它強大功能,從而滿足承載和處理統計數據的要求。

提示:本頁中JS腳本代碼可復制粘貼到JS代碼運行窗口調試體驗; 文本編輯快捷鍵:Ctrl+A - 全選;Ctrl+C - 復制; Ctrl+X - 剪切;Ctrl+V - 粘貼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM