`
zuroc
  • 浏览: 1318979 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

淘宝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);
分享到:
评论
15 楼 hax 2008-01-07  
使用sort的同志,请执行:

alert(['1',1,'1',1,'1',{toString:function(){return '1'}},{valueOf:function(){return 1}}].sort().map(function(x){return x + ' ' + typeof x}))

注:所用的map()是javascript 1.6增加的方法,spidermonkey(ff)和rhino有原生支持,其它引擎中要自己写一个。
14 楼 yanzimywife 2008-01-07  
引用
题2 太简单了,1分钟搞定

执行最快速,代码最精减,

Array.prototype.unique=function(){
this.sort();
var a = [];
for(var i=this.length-1;i>-1;i--)
{
if( this[i] != a[ a.length - 1 ] )
a.push(this[i]);
}
return a;
}

alert([1,2,3,3,2,1,34,2,8,9,23,6,7,3,9,23,4,32,3,0,43].unique());

咱们想到一块去了,呵呵!
13 楼 hax 2007-12-28  
zcfg 写道
楼主过于自恋了,在css中用expression绝对是下下之举;还有你的unique方法,在数组中加个元素null,再试试?


你也有点自恋。就这个题目来说,用expression是ok的。至于null的问题,原题本身就不严谨。当然如果做题的人做的严谨一点当然更好。
12 楼 chpn 2007-12-28  
<script>
Array.prototype.getDistinctItems=function(){
	var tmp=this.slice(0,this.length).sort();
	var a = [];
	for(var i=tmp.length-1;i>-1;i--)
	{
		if(typeof tmp[i] !="undefined" &&  tmp[i] != a[ a.length - 1 ] )
			a.push(tmp[i]);
	}
	return a;
}
alert([1,2,3,3,2,1,3,34,2,234,223,23,332,221,3,33,23,4,32,32,323,43].getDistinctItems());
</script>
11 楼 chpn 2007-12-28  
题2 太简单了,1分钟搞定

执行最快速,代码最精减,

Array.prototype.unique=function(){
this.sort();
var a = [];
for(var i=this.length-1;i>-1;i--)
{
if( this[i] != a[ a.length - 1 ] )
a.push(this[i]);
}
return a;
}

alert([1,2,3,3,2,1,34,2,8,9,23,6,7,3,9,23,4,32,3,0,43].unique());
10 楼 dingyuan 2007-12-13  
这个题目出得就强人所难,本身这个问题最好就用表格,用这么多方法,写这么多代码,不如嵌入一个表格实际...w3c从来就没有把表格踢出标准之外,表格也属于盒模型的范围
9 楼 zcfg 2007-12-13  
楼主过于自恋了,在css中用expression绝对是下下之举;还有你的unique方法,在数组中加个元素null,再试试?
8 楼 zuroc 2007-12-13  
afcn0 写道
首先我不知道uniq大都应该出现在什么场合,个人认为不知道干什么用,其次性能来说,当然是使用js1.6的Array新方法indexOf性能最好,其次如果没有原生indexOf或者原生indexOf效率不好,那最简单的也就是splice和i--;这也是比较简单的,比较效率高的。但从语法上理解,这个效率是最高的,因为其他的使用中间数组的,如果要修改原数组引用都需要2次循环。但是对于不需要修改原数组引用,include判断显然最合适。

我晕倒,看看算法的复杂度,indexOf是O(n^2),我的对应于html element是O(n)
7 楼 afcn0 2007-12-13  
首先我不知道uniq大都应该出现在什么场合,个人认为不知道干什么用,其次性能来说,当然是使用js1.6的Array新方法indexOf性能最好,其次如果没有原生indexOf或者原生indexOf效率不好,那最简单的也就是splice和i--;这也是比较简单的,比较效率高的。但从语法上理解,这个效率是最高的,因为其他的使用中间数组的,如果要修改原数组引用都需要2次循环。但是对于不需要修改原数组引用,include判断显然最合适。
6 楼 zuroc 2007-12-12  
"如果一架飞机看起来很棒,那它一般飞的也不差"]
我也听说
"金玉其外,败絮其中也哉"
"人不可貌相"
哲学的游戏永远没有结论

"清晰的逻辑用最简单的代码"
这是依靠封装而不是把实际问题想象得简单:)

当然实际问题简单时也没有必要复杂化
但是unique是一个很常用的操作,在纯ajax网页(比如gmail)中往往要处理大量数据.
所以我认为:
每天都用的轮子应该优先考虑性能
正如
我们要用节油的汽车:O

5 楼 afcn0 2007-12-12  
怎么说呢,一句话,就和哪个什么飞机一样,如果一架飞机看起来很棒,那它一般飞的也不差,web开发也是,应该把清晰的逻辑用最简单的代码表述出来,用最正确的工具解决最需要解决的问题才是问题的关键,如果代码看起来很好,那它一般工作起来也不次,所以如果使用最正确解决办法,和最清晰代码会给高分,性能是一个很有趣的问题,webkit opera jscript spidermonkey rhino都不一样,任何性能优化都是建立在大量实现测试上的,纯逻辑说什么性能好比较空.
4 楼 zuroc 2007-12-12  
1.
"expression始终是css之外的东西,web就是要分离css js才要避免使用expression"

是 用药疗毒 还是 以毒攻毒 都有用处
2.
"uniq重要的不是性能"
如果用gmail2.0的话,被csdn的blog卡的半死的话,就知道性能是一个永恒的问题
3 楼 afcn0 2007-12-12  
jquery怎么做不代表那么做就是正确的,expression始终是css之外的东西,web就是要分离css js才要避免使用expression,并且也根本没有必要,宁可使用table一行一列垂直居中我也不用expression,uniq重要的不是性能,而是严谨,逻辑清晰,所以这样写
Array.prototype.include=function(object){   
for (var i=0;i<this.length;i++)   
{   
if (object==this[i])   
return true;   
}   
return false;   
}   
Array.prototype.uniq=function(){   
var temp=[];   
for (var i=0;i<this.length;i++ )   
{   
if(!temp.include(this[i]))   
temp.push(this[i]);   
}   
return temp;   
}   
Array.prototype.selfUniq=function(){   
var temp=this.uniq();   
this.length=0;   
for (var i=0;i<temp.length;i++)   
{   
this.push(temp[i]);   
}   
return this;   
}   

是最严谨,当然即使这样,还是要考虑弱类型转换之间的问题,那就看需要是否===了
2 楼 zuroc 2007-12-12  
jquery在对__exist属性做法是动态根据时间生成一个uuid为名字的属性

expression不错:)ff和opera已经正确居中,这里只需要对ie hack
1 楼 afcn0 2007-12-12  
第一,expression不能用,解法background最好
第二,unique,太费劲,来回来去倒动好几次,还对于object类型实行了侵入属性,如果原来对象存在_exist属性呢,所以不好,最后=null不好,使用delete,我的给分65分

相关推荐

    select2.mim.js and select2.min.css.zip

    本文将详细介绍Select2及其相关文件`select2.min.js`和`select2.min.css`,以及它们如何在项目中发挥重要作用。 Select2是一款强大的JavaScript库,它能够将普通的HTML `&lt;select&gt;`元素转变为功能丰富的选择器。通过...

    dist.rar, Video.js发布dist Video.js 7.6.0、video.min.js、video-js.min.css,下载可直接使用

    "video-js.min.css"则是Video.js的样式表文件,同样经过了压缩,包含了播放器界面的默认样式。这个CSS文件定义了播放器的外观,包括按钮、滑块、时间线等元素的样式。你可以根据需要覆盖这些样式,以匹配你的网站...

    openlayers : ol.js、ol.css 下载

    OpenLayers 是一个强大的开源JavaScript库,专门用于在Web上创建交互式的地图应用。它支持多种数据源,包括WMS、WMTS、TMS、GeoJSON等,使得开发者能够轻松地将地理信息集成到网页中。`ol.js`是OpenLayers的核心...

    wow.min.js和animate.css

    首先,"wow.min.js" 是一个JavaScript库,它主要用于检测用户的滚动行为,当用户滚动到特定元素时,可以触发预先设定的CSS3动画。这个库由Matthieu Aussaguel创建,它的主要功能是与"animate.css"配合,使得网页元素...

    openlayers : ol.css ol.js

    总结起来,OpenLayers的`ol.css`和`ol.js`文件是构建基于Web的地图应用的基础,它们分别为地图组件提供样式和实现地图操作的JavaScript功能。理解和熟练使用这两个文件是掌握OpenLayers的关键。在项目中正确引入并...

    toastr.js toastr.css 下载

    5. **非侵入性**:Toastr.js 不会改变你的DOM结构,而是通过CSS定位在页面上,避免与你的其他元素发生冲突。 Toastr.css 文件则是配合Toastr.js 使用的样式表,包含预定义的样式,使得通知看起来更加美观和专业。它...

    bootstrap.min.css

    bootstrap.min.css

    bootstrap.min.js和bootstrap.min.css

    在标题和描述中提到的"bootstrap.min.js"和"bootstrap.min.css"是Bootstrap的核心文件,它们包含了框架的主要功能。 "bootstrap.min.js"是Bootstrap的压缩版JavaScript库,它包含了一系列用于交互和动态效果的插件...

    使用pyLDAvis的实例结果,及d3.min.js,ldavis.v1.0.0.css,ldavis.v1.0.0.js

    1. d3.min.js,ldavis.v1.0.0.css,ldavis.v1.0.0.js三个文件内容 2. pyLDAvis的实例 3. 实例请参考:https://blog.csdn.net/weixin_35757704/article/details/123150467

    MUI【mui.min.css,mui.min.js,mui.ttf】

    这个压缩包包含三个核心文件:`mui.min.css`、`mui.min.js` 和 `mui.ttf`,它们是MUI框架的基本组成部分。 `mui.min.css` 是MUI的精简版样式表文件,它包含了MUI框架的所有基本样式规则。这些规则覆盖了各种UI组件...

    Bootstrap(包含boostrap.min.js以及bootstrap.min.css)

    2. `bootstrap.min.js`:这是Bootstrap的JavaScript插件集合,经过压缩以提高加载速度。这些插件增强了框架的功能,如:模态对话框的交互、折叠内容、轮播图、下拉菜单的动态效果等。虽然Bootstrap的很多功能可以...

    CSS中常用的 reset.css文件

    因此,在使用`reset.css`时,最好结合`normalize.css`或现代的CSS重置方法,如`Eric Meyer Reset`或`sanitize.css`,它们不仅重置样式,还会保留一些有助于无障碍浏览和语义化的默认样式。 在实际项目中,可以将`...

    《编写高质量代码 web前端开发修炼之道》中的base.css下载

    base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css base.css ...

    bootstrap.css.map

    这个文件对于前端开发者来说具有重要的意义,因为它有助于在调试时快速定位CSS样式。 首先,我们来解释一下什么是CSS Map(Source Map)。在进行CSS预处理或后处理时,如Sass、Less等,会生成压缩过的CSS文件,以...

    jquery.min.js+bootstrap.min.js+bootstrap.min.css

    标题中的"jquery.min.js+bootstrap.min.js+bootstrap.min.css"提到了三个关键的JavaScript和CSS文件,这些都是在Web开发中非常重要的资源。jQuery是一个高效、简洁的JavaScript库,而Bootstrap则是一个流行的前端...

    quill.min.js&quill.snow.css-最佳富文本编辑器

    Quill—心目中的最佳富文本编辑器 ...界面实在不够清新,不符合我的审美,遂决定给网站后台换一个富文本编辑器,经过几天的寻找以及试用,终于找到了符合我这强迫症的最完美的编辑器,它就是——Quill。 ...

    ace.rar_ace.min.css_ace.min.js_avatar2.p

    ACE前端模块是Web开发中的一款强大且功能丰富的代码编辑器,它主要由`ace.min.css`、`ace.min.js`和可能的图像资源如`avatar2.p`等组成。这个压缩包文件`ace.rar`包含了这些核心组件,使得开发者能够在网页上实现高...

    select2.js/select2.css

    select2资源包。里面包含select2相关的js、css,解压后在dist目录下可找到。使用select2需要搭配jquery1.8以上版本。在这资源包的vendor文件夹下有jquery2.1的版本

    mui.js mui.css mui.min.js mui.min.css

    1. **mui.js** 和 **mui.min.js**: 这两个文件都是 MUI 的 JavaScript 库。`mui.js` 是未压缩的版本,便于开发者阅读和调试代码,而 `mui.min.js` 是经过压缩和优化后的版本,体积更小,加载速度更快,适合在生产...

    vant.min.js/css

    "vant.min.js" 是 Vant 库的压缩版本 JavaScript 文件,包含了所有 Vant 组件的代码。这个文件经过了压缩处理,减小了文件大小,有利于加快页面加载速度。在 HTML 项目中,你需要在 `&lt;head&gt;` 标签内通过 `&lt;script&gt;` ...

Global site tag (gtag.js) - Google Analytics