高频数组基础操作,你还记得吗?

287 阅读2分钟

数组拼接字符串 Array.join([','])

已有数组返回选定的一个元素 Array.slice(start[,end]) //不影响原数组

删除元素,并向数组添加新元素

可以删除index后的N个元素(可为0),并追加任意元素。
即可以根据索引删除或添加数组元素

Array.splice(index,N[,item1,.....,itemX]) //改变原数组

连接(拼接)数组 Array.concat(Array1[,Array2,ArrayN]) //不改变原数组

快速复制数组(hack) Array.concat()

排序数组(改变原数组) Array.sort([sortby]) // sortby:排序方式,默认字母顺序排序a-z、0-9

排序数字数组 Array.sort(function(a,b){return a - b}) //小到大 Array.sort(function(a,b){return b - a}) //大到小

逆转数组顺序 Array.reverse() //改变原数组并返回数组

数组追加元素 Array.push(1[,2,3]) //改变原数组并返回length

删除数组最后一个元素

Array.pop() //改变原数组并返回最后一个元素
[1,2,3,4,5].pop() //return 5

删除数组第一个元素

Array.shift() //改变原数组并返回第一个元素

数组开头添加元素 Array.unshift(1[,2,3]) //改变原数组并返回length

数组转为字符串 Array.toString() //返回去左右中括号结果,对象变成'[object Object]'

indexOf

image_1b28d6covsbjq1nlh91gt41fsu9.png-34.3kB

Array.prototype.indexOf = Array.prototype.indexOf || function(item) {//扩展数组原型
    for (var i = 0, j = this.length; i < j; i++) {
        if (this[i] === item) {
            return i;
        }
    }
    return -1;
}

//[1,2,3,4,5].indexOf("1")
//return 0

//[1,2,3,4,5].indexOf("6")
//return -1

数组去重(打乱顺序,按字母排序找出重复,在原数组删除)

Array.prototype.distinct = function(){ //扩展数组原型链
	var self = this;
	var _a = this.concat().sort();
	_a.sort(function(a,b){
		if(a == b){
			var n = self.indexOf(a);
			self.splice(n,1);
		}
	});
	return self;
};

判断是否数组

value 是数组返回 true 不是返回false,伪数组不会通过检测

value instanceof Array;

清空数组

清空数组不能使用 delete 关键字,应

var arr = [0,1,2,3,4];
arr.length = 0;
console.log(arr);

伪数组

定义

  • 按索引方式存储数据;

  • 具有length属性;

  • 没有数组的push、shift、pop等方法;

      function的arguments对象,还有getElementsByTagName、childNodes等返回的NodeList对象,或者自定义的某些对象(sizzle.js)
    

证明定义

function make(){return arguments;}
var fakeArr = make(1,2,3,4,5)
var arr = [1,2,3,4,5]
fakeArr.push("6")
arr.push("6")

转换为数组

Array.prototype.slice.call({  
 0:"likeke",  
 1:12,  
 2:true,  
 length:3  
});  
//["likeke", 12, true]  

资料参考: w3school JavaScript Array对象