前端跨浏览器开发 前端模块化开发流程图 idea前端开发环境搭建
1.生成不重复随机数
javascript 代码
function createRandomNum(min, max, num) {
//min最小值,max最大值,num生成的个数
var randomNum = []
//生成对应数量的随机数
for (var i = 0; i < num; i++) {
randomNum[i] = myRandom(min, max)
}
var j = 0
var o = {}
//去重操作,如果存在则重新生成一个随机数
do {
if (!o[randomNum[j]]) {
o[randomNum[j]] = 1
j++
} else {
randomNum[j] = myRandom(min, max)
}
} while (j < num)
// return randomNum.sort(sortNumber);
return randomNum
}
//生成随机数函数
function myRandom(min, max) {
var x = max – min + 1
return Math.floor(Math.random() * x) + min
}
function sortNumber(a, b) {
return a – b
}
console.log(createRandomNum(1, 30, 20))
2.写出2-3个数组去重的方法
javascript 代码
//第一种方法:
//1.创建一个新的数组存放结果
//2.for循环每次从原数组中取出一个元素,用这个元素循环和结果数组对比
//3.如果结果数组中没有该元素,存入结果数组
function my_unique1(arr) {
var result = [arr[0]]
var l = arr.length
for (var i = 1; i < l; i++) {
var flag = false
//这里要动态获取result数组的长度
for (var j = 0; j < result.length; j++) {
if (arr[i] === result[j]) {
flag = true
break
}
}
if (!flag) {
result.push(arr[i])
}
}
return result
}
var arr = [1, ‘a’, ‘a’, ‘b’, ‘d’, ‘e’, ‘e’, 1, 0]
console.log(my_unique1(arr))
//第二种方法:
//1.先将原数组进行排序
//2.检查原数组中的第i个元素 是否与结果数组的最后一个相同
//3.若不相同,将该元素存入结果数组中
function my_unique2(arr) {
var arr = arr.sort()
var result = [arr[0]]
var l = arr.length
for (var i = 1; i < l; i++) {
if (arr[i] !== result[result.length – 1]) {
result.push(arr[i])
}
}
return result
}
var arr = [1, ‘a’, ‘a’, ‘b’, ‘d’, ‘e’, ‘e’, 1, 0]
console.log(my_unique2(arr))
//第三种方法:
//1.创建一个新的数组存放结果
//2.创建一个空对象
//3.for循环时每次取出一个元素与对象进行对比,如果不存在,则把这个元素作为对象的一个属性,并赋值为1
function my_unique3(arr) {
var result = []
var o = {}
var l = arr.length
for (var i = 0; i < l; i++) {
if (!o[arr[i]]) {
result.push(arr[i])
o[arr[i]] = 1
}
}
return result
}
var arr = [1, ‘a’, ‘a’, ‘b’, ‘d’, ‘e’, ‘e’, 1, 0]
console.log(my_unique3(arr))
3.写一个简单的闭包
javascript 代码
function add() {
var i = 1
return function() {
return i++
}
}
var count = add()
console.log(count()) //1
console.log(count()) //2
console.log(count()) //3
4.手写insertAfter()函数
javascript 代码
function insertAfter(newEle, tgtEle) {
var parent = tgtEle.parentNode
//如果要插入的目标节点是最后一个节点.直接append在最后
if (tgtEle == parent.lastChild) {
parent.appendChild(newEle)
//否则,插入在目标节点的下一个节点的前面,也就是目标节点的后面
} else {
parent.insertBefore(newEle, tgtEle.nextSibling)
}
}
看下列==输出什么.
==比较规则:
1.有一个是布尔值,比较前先把布尔值转换为1,0
2.一个是字符串,一个是数值,比较前先把字符串转换为数值
3.一个是对象,一个不是.调用对象的valueOf()方法,得到的基本类型按前面的规则比较.
4.两个都是对象,比较是否指向同一个对象.是返回true,否则返回false.
5.null和undefined相等
6.NaN和任何参数都不等
7.要比较相等性之前,不能将null和undefined转换成其它值
javascript 代码
undefined == null; //true
undefined == true; //false
undefined == false; //false
null == true; //false
null == false; //false
1 == true; //true
2 == true; //false,这里是自动把true,false转换为1,0
0 == false; //true
0 == “”; //true
NaN == NaN; //false,NaN不等于NaN
[] == false; //true
[] == []; //false,两个[]的地址不同
[] == ![]; //true //这里![]等于false
var obj = {};
obj == true; //false
obj == false; //false,理由见第7点
把下划线命名转换为驼峰命名.
javascript 代码
function changeStyle(name) {
//把下划线命名的名字按_分割
var result = name.split(‘_’)
var l = result.length
//从第二个词开始,驼峰第一个单词是小写
for (var i = 1; i < l; i++) {
//substr()接受两个参数,起始位置(0开始,如果是负数则指从尾部开始算起的位置,-1指最后一个元素)
//长度(可选,不写时默认到尾部)
result[i] = result[i].charAt(0).toUpperCase() + result[i].substr(1)
}
return result.join(”)
}
var testName = ‘get_element_by_id’
console.log(changeStyle(testName))
以YYYY-MM-DD的形式输出今天日期
javascript 代码
function showTime() {
var date_now = new Date()
var year = date_now.getFullYear()
var month = date_now.getMonth() + 1
var day = date_now.getDate() //getDate获得日期,getDay()获得星期几,0周末
month = check(month)
day = check(day)
var result = year + ‘-‘ + month + ‘-‘ + day
return result
}
//日期小于10,前面补0填充
function check(t) {
if (t < 10) {
t = ‘0’ + t
}
return t
}
console.log(showTime())
前端开发棋牌游戏 前端开发中浏览器兼容问题 前端与游戏程序开发哪一个好
» 本文来自:前端开发者 » 《前端工程师Js笔试常见题》
» 本文链接地址:https://www.rokub.com/5408.html
» 您也可以订阅本站:https://www.rokub.com
评论前必须登录!
注册