最近看到许多前端攻城师被面试题所困,分享一些自己解决的东西,还望笑纳!
/*数组去重*/
Array.prototype.unique1 = function(){
var res = [this[0]];
for(var i = 1; i < this.length; i++){
var repeat = false;
for(var j = 0; j < res.length; j++){
if(this[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(this[i]);
}
}
return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique1());
/*翻转字符串*/
方法一:
var str = "abcdef"
alert(str.split("").reverse().join(""))
方法二:
var str="abcdef"
var i=str.length;
i=i-1;
for (var x = i; x >=0; x--)
{
document.write(str.charAt(x));
}
方法三:
function reverse(str)
{
if(str.length == 0)return null;
var i = str.length;
var dstr = "";
while(--i >= 0)
{
dstr += str.charAt(i);
}
return dstr;
}
var str = "abcdef";
str = reverse(str);
alert(str);
/*获取数组中的最大值*/
var arr = [1,'范',4,3,50,9,5,0,-1,7,22];
var index = 0;
for(var x = 0; x < arr.length; x++){
if(arr[index] < arr[x]){
index = x;
}
}
document.write("索引为" + index + "中的" + arr[index] + "最大");
/*阻止事件冒泡*/
function stopBubble(e){
//如果传入事件对象且支持W3C的stopPropagation的用法
if(e && e.stopPropagation){
//即为非IE浏览器
e.stopPropagation();
}else{
//IE方式取消事件冒泡
window.event.cancelBubble=true;
}
/*水平垂直居中*/
方法1:
父级{
position:relative;
}
子集{
position:absolute;
left:50%;
top:50%;
transform:translate(-50%,-50%);
}
方法二:
父级{
display:flex;
justify-content:center;
align-items:center;
}
方法三(兼容):
.parent{
text-align:center;
display:table-cell;
vertical-align:middle;
}
.child{
display:inline-block;
}
/*JavaScript数据类型*/
基本数据类型:
undefined,null,boolean,number,string
复杂数据类型:
object
检测数据类型:
typeof
/* =、==和===的区别 */
= 赋值运算符
== 等于,比较值
=== 严格等于,比较值和数据类型
/*javascript闭包*/
我的理解是:闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部
的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。所以,在
本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
/*javascript如何检测一个变量为array类型*/
var arr = [1,2,3,1];
alert(arr instanceof Array); // true
var arr = [1,2,3,1];
alert(arr.constructor === Array); // true
希望这些东西会帮到大家!