JavaScript --- Array

155 阅读2分钟

1. 如何创建数组

var arr1 = [];

var arr2 = new Array();

2. 数组中的方法和对应的用法

shift(): 删除数组中的第一个项,并返回删除元素的值;如果数组为空则返回undefined

var arr1 = [1,2,3,4,5];
var result1 = arr1.shift();
console.log(result1); // 1
console.log(arr1); // [2,3,4,5]

unshift(i): 将参数添加到原数组的开头

var result2 = arr1.unshift(3);
console.log(result2); // 5  是添加后数组的长度
console.log(arr1); // [3,2,3,4,5]  

注意: 在IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以这个方法的返回值不可靠,需要用返回值时可用splice代替本方法来使用。

pop(): 删除数组中的最后一个项,并返回删除元素的值;如果数组为空则返回undefined

var result3 = arr1.pop;
console.log(result3); // 5
console.log(arr1); // [3,2,3,4]

push(i): 把参数添加到数组的最后,并且返回数组的长度

var result4 = arr1.push(99);
console.log(result4); // 5
console.log(arr1); // [3,2,3,4,99]

 concat(): 数组合并

var arr2 = [1,2,3];
var arr3 = [55,66,77];
result1 = arr2.concat(4,5); // [1,2,3,4,5]
result2 = arr2.concat(arr3); // [1,2,3,55,66,77]  
// 这里还能发现一个点事arr2.concat(4,5) 没有对原来的数组arr2 有改动  这里的操作是重新找了一块内
// 来存储新的数组result1 

sort(orderfunction) || reverse(orderfunction): 按指定的参数对数组进行排序

var arr1 = [1,7,3,6,5];
result1 = arr1.sort(); // [1,3,5,6,7]  正序排列  从小到大
result2 = arr1.reverse(); // [7,6,5,3,1] 反序排列  从大到小

slice(start,end):  数组截取  返回从原数组中指定下标到结束下标之间的项组成的新数组但不包括结束下标下的数

var arr1 = [1,2,3,4,5];
result1 = arr1.slice(2,4); [3,4]
result2 = arr1.slice(2); [3,4,5]
var result3 = arr1.slice(0); //[1,2,3,4,5]  返回自身

join(): 按照指定的符号把数组拼接成字符串 默认是逗号

var arr1 = [1,2,3,4,5];
result1 = arr1.join('-'); // '1-2-3-4-5'

 splice(start,deleteCount,val1,val2,...):  从start位置开始删除deleteCount项,并从该位置起插入val1,val2,val3...

var arr1 = [1,2,3,4,5];
result1 = arr1.splice(2,2,7,8,9); // [1,2,7,8,9,5]  从下标2开始删除2项 并在下标2开始添加7,8,9
result2 = arr1.splice(0,1); //效果和shift相同
arr1.splice(0,0,-2,-1);
result3 = arr1.length; // 等同于unshift
result4 = arr1.splice(arr1.length-1,1); //等同于pop
arr1.splice(arr1.length,0,6,7);
result5 = arr1.length; // 等同于push

 注意点: splice和slice的区别在于splice会对原始数组产生影响,而slice是不会的,他只是把截取的部分生成一个新的数组,不会影响原始数组

数组去重的扩展

Array.prototype.unique = function(){
    var a= []; var l = this.length;
    for(var i=0; i<l; i++){
        for(var j = i+1;j<l;j++){
           if(this[i] === this[j]) j = ++i;
        }
        a.push(this[i]);
    }
    return a;
};

var arr = [1,1,2,11,2,3,55,222];
console.log(arr.unique()); // [1,2,11,3,55,222]

对于数组去重后续还需要继续深入的学习