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