淘宝07招聘题(1.css定位 2.js去重复) 我的解法

题目见 http://ued.taobao.com/blog/2007/11/20/job_test_explanation/

1.使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。

2.请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。

1.

#xxx{
text-align:center;
width:200px;
height:200px;
border:1px solid #ff0;
vertical-align: middle;
display: table-cell;
}
#xxx img{
/* ff和opera已经正确居中,这里只需要对ie hack,以毒攻毒  */
margin-top:expression(100-this.height/2);
}


2.
对于css选择器等等应用,性能是一个很大的问题,我优先考虑效率:)
如果被gmail2.0,csdn的blog等等,卡得半死过的话,就知道性能是一个永恒的问题
Array.prototype.unique=function(){
  var temp=[],objlist=[],dict={};
  for(var i=this.length-1;i>=0;--i){
    if(typeof (this[i])=="object"){//还有function等

//可以动态根据时间生成一个uuid为名字的属性,以免覆盖
//比如var exist=__exist+(new Date()).getTime()
//然后用this[i][exist]访问
      if(this[i].__exist){
        temp.push(this[i]);
      }else {
        this[i].__exist=1;
        objlist.push(this[i]);
      }
    }else {
      if(this[i] in dict){
        temp.push(this[i]);
      }else {
        dict[this[i]]=1;
        objlist.push(this[i]);
      }
    }
  }
  for(var i=objlist.length-1;i>=0;--i){
    objlist[i].__exist=null;
    this[i]=objlist[i];
  }
  this.length=objlist.length;
  return temp;
};
var a=[1,2,3,3,2,1,2];
alert(a.unique());
alert(a);

你可能感兴趣的:(jquery,css,prototype,IE,招聘)