1. 请用至少3中方式实现数组去重?
方法一: indexOf
var arr1=[1,2,3,4,5,4,3,2,1];
function repeat1(arr){
for(var i=0,arr2=[];i<arr.length;i++){
if(arr2.indexOf(arr[i])==-1){ arr2.push(arr[i]); } }
return arr2; } 方法二: hash
function repeat2(arr){
// 1. 遍历arr中每一个元素,同时声明hash for(var i=0,hash={};i<arr.length;i++){
// hash中是否包含当前元素值的建 // 若是不包含,就hash添加一个新元素, // 以当前元素值为key,value默认为1 if(hash[arr[i]]===undefined){ hash[arr[i]]=1; } }
// 2. 将hash转为索引 var i=0;
var arr2=[];
for(arr2[i++] in hash);
return arr2; } 方法三: 正则
function repeat3(arr){
return arr.sort().join(",,").
replace(/(^|,,)([^,]+)(,,\2)*/g,"$1$2").split(",,");}
console.log(repeat3(arr1));
2. HTTP状态码及其含义?
1XX:
信息状态码100 Continue 继续,
通常在发送post请求时, 已发送了http header以后服务端将返回此信息, 表示确认,以后发送具体参数信息;
2XX:
成功状态码200 OK 正常返回信息
201 Created 请求成功而且服务器建立了新的资源
202 Accepted 服务器已接受请求,但还没有处理
3XX:
重定向301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
303 See Other 临时性重定向,且老是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
4XX:
客户端错误
400 Bad Request 服务器没法理解请求的格式, 客户端不该当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未受权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
5XX:
服务器错误500 Internal Server Error 最多见的服务器端错误。
503 Service Unavailable 服务器端暂时没法处理请求 (多是过载或维护)。
3. html5有哪些新特性、移除了那些元素?
HTML5 如今已经不是 SGML 的子集,
主要是关于图像,位置,存储,多任务等功能的增长:
1) 绘画标签canvas;
2) 用于媒介回放的 video 和 audio 元素;
3) 本地离线存储 localStorage 长期存储数据,
浏览器关闭后数据不丢失;
4) sessionStorage 的数据在浏览器关闭后自动删除;
5) 语意化更好的内容元素,
好比article、footer、header、nav、section;
6) 表单控件,calendar、date、time、email、url、search;
7) webworker, websocket, Geolocation;
移除的元素:
1) 纯表现的元素:basefont,big,center,font, s,strike,tt,...
2) 对可用性产生负面影响的元素:frame,frameset,noframes
4. display: none;与visibility: hidden;的区别?
相同点:
它们都能让元素不可见
不一样点:
display:none;
会让元素彻底从渲染树中消失, 渲染的时候不占据任何空间;
visibility: hidden;
不会让元素从渲染树消失, 渲染师元素继续占据空间,
只是内容不可见;
display: none;是非继承属性, 子孙节点消失因为元素从渲染树消失形成, 经过修改子孙节点属性没法显示;
visibility: hidden;
是继承属性, 子孙节点消失因为继承了hidden, 经过设置
visibility: visible;
可让子孙节点显示; 修改常规流中元素的display一般会形成文档重排。 修改visibility属性只会形成本元素的重绘。 读屏器不会读取display: none;元素内容; 会读取visibility: hidden;元素内容
5. 如何解决跨域问题?
1) jsonp
2) iframe
3) window.name 4) window.postMessage 5) 服务器上设置代理页面
6. XML和JSON的区别?
1) 数据体积方面JSON相对于XML来说, 数据的体积小,传递的速度更快些。
2) 数据交互方面JSON与JavaScript的交互更加方便, 更容易解析处理,更好的数据交互。
3) 数据描述方面;JSON对数据的描述性比XML较差。
4) 传输速度方面:JSON的速度要远远快于XML。