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]

非稀疏数组

不缺失任何值

伪数组

  1. 伪数组是个对象
  2. length属性 ,且为number类型
  3. 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) :

  1. 将后一个数组合并到前一个数组, 作为新数组返回, 原数组不会改变;

  2. 合并时的长度无限制

Array.prototype.push.apply(arr1, arr2):

  1. 数组合并后返回新数组的个数, arr1改变, arr2不变;

  2. 合并时长度一般不超过十万,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]

results matching ""

    No results matching ""