Upgrade to Pro — share decks privately, control downloads, hide ads and more …

世恩- 陣列

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for KuoGeorge KuoGeorge
May 11, 2018
25

世恩- 陣列

讀書會- 從ES6開始的Javascript學習生活

Avatar for KuoGeorge

KuoGeorge

May 11, 2018

Transcript

  1. 拷⾙貝陣列列 const aArray = [1, 2, 3] const bArray =

    aArray aArray[0] = 100 console.log(bArray) //[100, 2, 3]
  2. 淺拷⾙貝 vs 深拷⾙貝 const a=[1,2,3]; const b=a; 淺拷⾙貝 => 指向同⼀一個陣列列=>參參照位置還是同⼀一個

    也就是b指向a的位置 深拷⾙貝 => 獨立出來來的陣列列 也就是b複製a,然後b指向b的位置
  3. 淺拷⾙貝⽅方法(推薦) 1.展開運算符 const aArray = [1, 2, 3] const bArray

    = [...aArray] bArray; //[1,2,3] const cArray=[4,5,6,...aArray,7,8,9] cArray; //[4,5,6,1,2,3,7,8,9] 優點:簡單易易懂
  4. 淺拷⾙貝⽅方法 2.concat(串串聯聯) (“看起來來像”深拷⾙貝) const aArray = [1, 2, 3] const

    bArray = [4,5,6...aArray] bArray; //[4,5,6,1,2,3] //----------- const cArray =[4,5,6].concat(aArray)
  5. 深拷⾙貝的⽅方法 var arr = [1, 2, 3, 4, 5] var

    arr2 = copyArr(arr) function copyArr(arr) { let res = [] for (let i = 0; i < arr.length; i++) { res.push(arr[i]) } return res } arr.push(7); arr //1,2,3,4,5,7 arr2.push(6); arr2 //1,2,3,4,5,6
  6. 判斷是不是陣列列2 let array=[1,2,3] 3. Instanceof 優點:簡潔易易懂 array instanceof Array 失效情況

    : 處理理不同window或iframe時的變數會失效 4.toString.call 最正確,但效率最差(推薦) Object.prototype.toString.call(array) === '[object Array]'
  7. 陣列列的屬性 length 長度 是可以改變的 const bArray = [1, 2, 3]

    console.log(bArray.length) //3 bArray.length=2; console.log(bArray) //1,2 所以,當length=0的時候可以清空陣列列 但直接⽤用空陣列列效率最好 => bArray = [ ];
  8. 陣列列的⽅方法 使⽤用 indexOf 查詢索引值 沒找到會回傳-1 ,如果多個成員符合則回覆第⼀一個 也可以加入第⼆二個參參數 代表“開始搜尋的索引值” 如果入負數擇時從最後⾯面開始 const

    aArray = ['a', 'b', 'c', 'a', 'c', 'c'] console.log( aArray.indexOf(‘a’) ) //0 console.log( aArray.indexOf(‘c’) ) //2 console.log( aArray.indexOf(‘b’, 3) ) //-1 console.log( aArray.indexOf(‘a’, -3) ) //3