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返回筛选出的结果组成的数组

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