day 06 數組

1. 數組

(1)概念

一個變量只能存儲一個數據,若是咱們有一組數據,好比1到100一百個數字,定義100個變量來存儲就太痛苦了,這時候咱們就須要數組來存儲這樣的數據。數組相似於數學概念中的中的集合。javascript

(2)定義

​ 1)構造方法:使用new 在內存中開闢空間, 返回的是new出來空間的地址java

var arr = new Array();//無參構造函數,建立一空數組
var arr = new Array(5);//建立指定長度的數組(因爲數組長度能夠動態調整,做用並不大)
var arr = new Array(1,2,'hello');//建立數組並初始化參數數據

​ 2) 字面量:使用方括號,與上面的new 是同樣的,也會在內存中開闢空間數組

var arr = [ ];//等同於調用無參構造函數
var arr = [10];//等同於調用帶有初始化數據的構造函數

(3)數組元素的訪問

  • 語法: 數組名[下標];dom

    • 下標base on zero, 下標最大取值是「長度-1」,千萬不要越界(越界後的結果不是你想要的結果)
    • 下標是連續的整數
    • 下標能夠是變量或表達式
    • 數組的長度:數組名.length 返回當前數組的長度
  • 數組的修改函數

    數組名[下標]= 賦值;
    var arr = [5,7,9];
    arr['haha'] = 99;//若是對沒有的下標元素進行賦值,則等價於添加新元素
    console.log(arr);//5,7,9,99

(4)數組的遍歷

一般操做數組時,每一個元素都要操做一遍,這個時候咱們會用循環來訪問每個元素,循環訪問數組的每個元素的過程就叫作數組的遍歷。學習

//1. 常規的for循環
for(var i=0;i<arr.length; i++){
    console.log(arr[i]);
}
//2. for...in...遍歷數據的下標
     for(var index in arr){
        // console.log(arr[index]);
        console.log(index);
    }
// 3. for...of...遍歷內容
for(var item of arr){
    console.log(item);
}

(5)數組的逆序

<script>
    var arr=[5,6,3,7,8,4];
    for(var i=0; i<parseInt(arr.length/2);i++){
        // 交換元素
        var temp;
        temp = arr[i];
        arr[i] = arr[arr.length-i-1];
        arr[arr.length-i-1] = temp;
    }
    for(var i=0; i<arr.length;i++){
        console.log(arr[i]);
    }
</script>

(6)數組的常見函數

如何學習函數:關注3點

  1. 函數的功能
  2. 函數的參數
  3. 函數的返回值
push 尾插 返回數組的新長度
  • 數組名.push (參數1,[參數2...參數N]):
  • 向數組的末尾添加一個或多個元素
var arr = [1,2,3];
var len = arr.push(4,5);
console.log(len);//5
console.log(arr);//1,2,3,4,5
pop 尾刪 無參 返回被刪元素
  • 刪除並返回數組的最後一個元素
var arr=[8,5,9];
var x = arr.pop();
console.log(x);//9
console.log(arr);//8,5
unshift 頭插 返回數組的新長度
  • 數組名.unshift(參數1,[參數2...參數N])
  • 向數組的開頭添加一個或多個元素,並返回新的長度
var arr = [6,5,7];
var a = arr.unshift(10,90);
console.log(a);//5
console.log(arr);//10,90,6,5,7
shift 頭刪 無參 返回被刪元素
  • 把數組的第一個元素從其中刪除,並返回第一個元素的值
var arr=[1,2,3];
var x = arr.shift();
console.log(x);//1
console.log(arr);//2,3
splice 刪除若干個元素或添加若干個元素
  • splice(參數1, 參數2, 參數3) 返回一個由刪除元素組成的新數組code

    • 參數1 開始索引
    • 參數2 刪除元素的位數
    • 參數3 插入的新元素,固然也能夠寫多個
join 經過參數鏈接成字符串
  • 數組名.join([分隔符號])
  • 將數組轉爲字符串 :返回值爲轉換後的字符串排序

    var arr=[4,7,3];
    console.log(arr.join('~'));//4~7~3
slice 截取子數組
  • slice (起始位置,結束位置):返回截取的子數組 左閉右開
var arr=[4,6,7,4,6,5];
var arr1 = arr.slice(3,5);
console.log(arr1);//4, 6
concat 拼接數組
  • concat(增長的數組): 返回一個新數組索引

    var arr1 = [6,7,5,8];
    var arr2 = [0,3,7];
    console.log(arr1.concat(arr2));//6,7,5,8,0,3,7
reverse() 將數組逆序
  • 無參 無返回 與以前不一樣的是它會直接修改原數組
var arr=[5,7,8,9,3];
arr.reverse();
console.log(arr);//3,9,8,7,5
sort() 數組排序
  • 用於對數組進行排序 (只能由小到大)
  • 字符串比較,因此和咱們預想的結果不一樣
  • 返回排序後的數組, 且原數組發生改變
var arr=[9,7,8,5];
arr.sort();
console.log(arr);//5,7,8,9
var arr=[19,7,8,5];
arr.sort();
console.log(arr);//19, 5,7,8

二維數組(瞭解)

var arr = [[],[],[],[]];

隨機函數

  • Math.random();
  • 無參,返回值爲0~1的小數

排序

冒泡排序ip

  • 趟次(外層循環): N-1;
  • 次(內層循環):N-1-i; 內層循環兩兩交換
//使用冒泡法由小到大排列
<script type="text/javascript">
    var arr= [5,7,8,4,6,5,2,7];
    var temp;
    // 外層循環n-1次
    for(var i=0; i<arr.length; i++){
        // 內層循環n-i-1
        for(var j=0; j<arr.length-i-1;j++){
            //由小到大排列
            if(arr[j]>arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    console.log(arr);//[2, 4, 5, 5, 6, 7, 7, 8]
</script>
相關文章
相關標籤/搜索