数组对象自带的排序方法,数组去重

1,数组对象自带的排序方法

Array.sort()方法有面试官问到时如何实现的,实现的关键过程就是比较数组中的每一项的首个字符(将整个字符转换成string以后,将第一个字符分离出来)

2,数组去重

数组去重的关键思想是:当新数组里没有要进来的新项时,那就放进新数组里,最后返回新数组

代码:

<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var a=[23,12,5,78,6];
var b=['ad','d22','b22','425','ad'];

//数组自带的排序方法实现
Array.prototype.sort2=function (){
var res=[];
for(var i=0;i<this.length;i++){
for(var j=i+1;j<this.length;j++){
// console.log(this[i].toString().substring(0,1));
var a=parseInt( this[i].toString().substring(0,1) );
var b=parseInt( this[j].toString().substring(0,1) );
if( a > b ){
var flag=this[i];
this[i]=this[j];
this[j]=flag;
}
}
res.push(this[i]);
}
return res;
}
console.log(a.sort2());//12,23,5,6,78
console.log(a);//12,23,5,6,78
//正确的排序方法(也可以在.sort()方法中传入一个function compare(a,b){reuturn a-b;})
Array.prototype.mysort=function (){
var res=[];
for(var i=0;i<this.length;i++){
for(var j=i+1;j<this.length;j++){
if(this[i]>this[j]){
var flag=this[i];
this[i]=this[j];
this[j]=flag;
}
}
res.push(this[i]);
}
return res;
}

console.log(a.mysort());//5,6,12,23,78
console.log(b.mysort());//425,ad,ad,b22,d22

//对象下标(理解对象下标)
var a=new Object();
a.name="Tom";
a.sex="man";
a.age="22";
console.log(a["name"]);//Tom
console.log(a.name);//Tom

//数组去重
Array.prototype.unique3=function (){
var res=[];
var json={};
for(var i=0;i<this.length;i++){
if(!json[this[i]]){
res.push(this[i]);
json[this[i]]=1;
}
}
return res;
}

var arr=[11,22,34,'你好',55,4,'ffff','dd',11,22,34,'你好',55,4,'ffff','dd'];
console.log(arr.unique3());//11,22,34,你好,55,4,ffff,dd
</script>
</body>

</html>

3,伪数组

符合以下条件的对象称为伪数组:
1,具有length属性
2,按索引方式存储数据
3,不具有数组的push,pop等方法

如:
1,function内的arguments 。
2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsByTagName() ,childNodes/children方式获取的集合(HTMLCollection,NodeList)等。

特殊写法的对象 ,如

var obj={};  
obj[0] = "一";  
obj[1] = "二";  
obj[2] = "三";  
obj.length = 3;
重新设计一下这个函数,让它直接拥有数组的方法
// 方法一、 声明一个空数组,通过遍历伪数组把它们重新添加到新的数组中
   var arr = [];
   for (var i = 0; i < obj.length; i++) {
       arr[i] = obj[i]
   }

// 方法二、使用数组的slice()方法 它返回的是数组,使用call或者apply指向伪数组 
var arr = Array.prototype.slice.call(obj);





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值