数组的常用方法(ES3)
以ES3.0为基础,ES5.0 在ES3基础上扩展,ES6.0 在ES5基础上扩展。
改变原数组的方法:
- push、pop、shift、unshift、sort、reverse、splice.
<script type = "text/javascript">
var arr = [];
//1、push 在数组的最后添加数据
arr.push(1,2,3,4,5);
console.log(arr);
//2、如何实现数组 Push 方法
Array.prototype.Push = function(){
for(var idx in arguments){
this[this.length] = arguments[idx];
}
}
arr.Push("a","b","C");
console.log(arr);
//3、pop 把数组最后一位剪切掉
arr.pop();
console.log(arr);
//4、如何实现数组 Pop 方法
Array.prototype.Pop = function(){
this.length --;
}
arr.Pop();
console.log(arr);
//5、unshift 在数组的前面插入元素
arr.unshift('e', 'd');
console.log(arr);
//6、shift 从数组的最前面删除元素
arr.shift();
console.log(arr);
//7、 reverse 逆转数组顺序
arr.reverse()
console.log(arr);
//8、splice 从第几位(负数为倒序操作),截取多少位,在切口处添加元素。
var a = arr.splice(1, 2, '10', '9')
console.log(a);
console.log(arr);
//9、sort 数组排序 默认按字符的 ASCII 排列
arr.sort();
console.log(arr);
//10 、 实现自定义sort,必须写两个形参,返回值为负数时前面的数放前面,为正数时后面的数放前面,0时不变位置。
arr.sort(function(a,b){
return b - a;
});
console.log(arr);
//11、乱序排列一个数组。
arr.sort(function(a,b){
return Math.random() - 0.5;
});
console.log(arr);
//11、排列一个对象数组。
var objs = [{age:53},{age:18},{age:22},{age:40}];
objs.sort(function(a,b){
return a.age - b.age;
});
console.log(objs);
</script>
不改原数组的方法
- concat、join、split、toString、slice
<script type = "text/javascript">
var arr1 = [1,2,3];
var arr2 = [4,5,6]
//concat 合并两个数组
var arr3 = arr1.concat(arr2);
console.log(arr1,arr2,arr3);
//join 把数组各元素用参数连接起来并返回字符形式
var str = arr3.join('-')
console.log(str);
//toString 返回各元素以逗号分割的字符串。
var str1 = arr3.toString();
console.log(str1)
//split 把字符串按参数进行分割成数组
var arr4 = str.split('-');
console.log(arr4);
//slice 截取数组从第几位(负数倒序)到第几位(没有第二个参数则截取到结尾)。可以作为转换数组的方法(不填参数)
var arr5 = arr4.slice(1,5);
console.log(arr5);
</script>
类数组
属性要为索引(数字)属性,必须有Length属性,最好加上push方法。
<script type = "text/javascript">
var obj = {
0:'a',
1:'b',
2:'c',
3:'d',
length:4,
push:Array.prototype.push,
splice:Array.prototype.splice
}
obj.push('e');
console.log(obj);
</script>
数组去重
- 数组去重 利用对象的属性不能重名的特性
<script type = "text/javascript">
//数组去重 利用对象的属性不能重名的特性
var arr = [1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,'a','a','a','a','a','b','b','b','b','b','b','b','b','c']
var obj = {}
var arr1 =[]
for(var idx in arr){
if(obj[arr[idx]] != 'abc'){
obj[arr[idx]] = 'abc';
arr1.push(arr[idx]);
}
}
console.log(arr1,obj);
</script>