Array
Array对象属性
属性 | 描述 |
---|---|
length | 设置或返回数组中元素的数目。 |
Array对象方法
方法 | 描述 |
---|---|
concat() | 连接两个或更多的数组,并返回结果 |
join() | 数组转为字符串,元素通过指定的分隔符进行分隔 |
push() | 数组尾部添加,返回数组长度(性能优于unshift) |
pop() | 数组尾部删除,返回取出的那个值(性能优于shift) |
unshift() | 数组头部添加,返回数组长度(改变栈内顺序) |
shift() | 数组头部删除,返回取出的那个值(改变栈内顺序) |
slice(索引, 索引) | 从某个已有的数组返回选定的元素,原数组不会改变 |
splice(索引, 个数, 替换内容) | 删除元素,并向数组添加新元素。原数组会改变 |
sort() | 排序(数字默认只按首字母排序,函数式可正确排序) |
reverse() | 数组反转 |
indexOf() | 查索引,未找到返回-1 |
lastIndexOf() | 从后开始查索引,查到的元素下标与正向查一样 |
includes(元素, 索引) | 是否包含某个元素,ES6新增方法,若索引为负从后开始找 |
valueOf | 返回原数组 |
toString() | 转为字符串,同 Array.join() |
toLocaleString() | 转为字符串 |
Array.isArray([]) | 数组原型方法,判断是否为数组 |
Array.from() | 数组原型方法,将类数组转为真正的数组 |
真数组
new Array()定义的 或者是 字面量出来的 []
稀疏数组
[1, ,2]
非稀疏数组
不缺失任何值
伪数组
- 伪数组是个对象
- 有length属性 ,且为number类型
- 有length-1为下标的属性(其余下标不指定默认为undefined)或length=0
例子:
1.slice(索引, 索引) 截取: 原数组不会改变 一个参数索引包左不包右
var arr = [1, 2, 3, 4, 5];
arr.slice(); //[1, 2, 3, 4, 5] ==> arr=[1, 2, 3, 4, 5]
arr.slice(0); //[1, 2, 3, 4, 5] ==> arr=[1, 2, 3, 4, 5]
arr.slice(-1); //[5] ==> arr=[1, 2, 3, 4, 5]
arr.slice(2); //[3, 4, 5] ==> arr=[1, 2, 3, 4, 5]
arr.slice(0, 2); //[1,2] ==> arr=[1, 2, 3, 4, 5]
2.splice(索引, 个数, 替换内容) 删除/替换: 原数组会改变 返回删除截取出来的数组,原数组为剩下的内容组成的数组
var arr = [1, 2, 3, 4, 5];
arr.splice(); // [] ==> arr=[1, 2, 3, 4, 5];
arr.splice(0); // [1, 2, 3, 4, 5] ==> arr=[];所以可用来清空数组
arr.splice(-1); // [5] ==> arr=[1, 2, 3, 4];
arr.splice(2); // [3, 4, 5] ==> arr=[1, 2];
arr.splice(0, 3); // [1, 2, 3] ==> arr=[4, 5];
arr.splice(0, 2, '9', '8', '7'); // [1, 2] ==> arr=["9", "8", "7", 3, 4, 5];
3.join 转换成字符串
var arr = [1, 2, 3, 4, 5];
arr.join() // 1,2,3,4,5
arr.join('') // 12345
arr.join(' ') // 1 2 3 4 5
arr.join(',') // 1,2,3,4,5
arr.join('|') // 1|2|3|4|5
arr.join('&') // 1&2&3&4&5
4.sort 排序
[0, 13, 2, 22, 25, 27, 29, 40, 50, 64].sort()
// [0, 13, 2, 22, 25, 27, 29, 40, 50, 64]
[0, 13, 2, 22, 25, 27, 29, 40, 50, 64].sort(function(a, b){return a-b})
// [0, 2, 13, 22, 25, 27, 29, 40, 50, 64]
[0, 13, 2, 22, 25, 27, 29, 40, 50, 64].sort(function(a, b){return b-a})
// [64, 50, 40, 29, 27, 25, 22, 13, 2, 0]
5.concat / Array.prototype.push.apply(arr1, arr2) 数组合并
arr1.concat(b) :
将后一个数组合并到前一个数组, 作为新数组返回, 原数组不会改变;
合并时的长度无限制
Array.prototype.push.apply(arr1, arr2):
数组合并后返回新数组的个数, arr1改变, arr2不变;
合并时长度一般不超过十万,apply改变的是两个数组,性能上会慢
var a = [1,2,3];
var b = [4,5];
a.concat(b) // [1, 2, 3, 4, 5]
console.log(b); // [4, 5]
console.log(a); // [1, 2, 3]
Array.prototype.push.apply(a,b) // 5
console.log(a); // [1, 2, 3, 4, 5]
console.log(b); // [4, 5]