Day4-數組練習(1)

  • 創建
    var arr = new Array(2,3,5,0);var arr = [2,3,5,0]; 創建數組的效果是一樣的
var arr = new Array(1,2,2,2,);
console.log(arr);

var brr = [1,2,'2',2];
console.log(brr);

console.log(arr == brr);        //F
console.log(arr[2] == brr[2]);  //T
console.log(arr[2] === brr[2]); //F
  • 下標與長度
    使用一個合法的下標爲數組元素賦值,並且該下標超出了當前數組的大小的時候,解釋器會同時修改 length 的值,也可以顯式地給 length 賦一個更大的值,而爲 length 賦一個更小的值則會刪掉一部分元素。
var fruits = [];
fruits.push('banana', 'apple', 'peach');
console.log(fruits.length); // 3

fruits[5] = 'mango';
console.log(fruits[5]); // 'mango'
console.log(Object.keys(fruits));  // ['0', '1', '2', '5']
console.log(fruits.length); // 6

fruits.length = 10;
console.log(fruits.length); // 10

fruits.length = 2;
console.log(Object.keys(fruits)); // ['0', '1']
console.log(fruits.length); // 2

基本方法

  • 創建數組
  • 通過索引訪問元素
  • 遍歷數組元素
  • 在數組開頭/末尾添加元素
  • 在數組開頭/末尾刪除元素
  • 按索引刪除元素
  • 找出元素索引值
  • 複製數組: slice() 方法返回一個新的數組對象,這一對象是一個由 begin和 end(不包括end)決定的原數組的淺拷貝
  • 判斷是否是一個數組對象

常用方法

  • Mutator(修改器) methods,會修改調用這些方法的對象自身(改變原數組

    增 / 刪 ,splice() 方法通過刪除或替換現有元素來修改數組,並以數組形式返回被修改的內容。
    Array.prototype.reverse();
    Array.prototype.sort();

var fruits = [1, 2, 3];
console.log(fruits);     // [1, 2, 3]

var newfruits = fruits.reverse();
console.log(newfruits);  // [3, 2, 1]
console.log(fruits);     // [3, 2, 1]

1 - 通常規定,對於兩個元素x和y,如果認爲x < y,則返回-1,如果認爲x == y,則返回0,如果認爲x > y,則返回1,這樣,排序算法就不用關心具體的比較過程,而是根據比較結果直接排序。
2 - 字符串根據ASCII碼進行排序,而小寫字母a的ASCII碼在大寫字母之後。
3 - Array的sort()方法默認把所有元素先轉換爲String,按照轉換爲的字符串的各個字符的Unicode位點進行排序。
4 - 如果指明瞭 compareFunction,那麼數組會按照調用該函數的返回值排序。

sort()方法也是一個高階函數,可以接收一個比較函數來實現自定義的排序,這裏返回的是1 、-1和 0,實際上判斷的是(a - b)比0大還是比0小。

var fruits = [56, 2, 3, 9, 4, 23];
var newfruits = fruits.sort(function(x,y){
	if(x>y) { return 1; }
	if(x<y) { return -1; }
	return 0;
});
console.log(newfruits);   
// sort()方法會直接對Array進行修改,它返回的結果仍是當前Array(同一個數組對象)

MDN:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
廖雪峯:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014351226817991a9c08f1ec0a45c99b9209bcfc71b8f6000

  • Accessor(訪問)methods,不會改變自身,而是返回一個新的數組對象或一個期望值

    Array.prototype.concat();
    Array.prototype.join();
    Array.prototype.indexOf();

  • Iteration methods
    map把數組中的每個元素進行處理後,返回一個新的數組。
    reduce
    forEach
    filter返回篩選出的結果組成的數組

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章