数组去重:
js方式:
let arr = [1,2,3,4,5,5,6,6,4,9,3,2]
var res = []
for (var i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) === -1) {
res.push(arr[i])
}
}
es6方式:
let arr = [1,2,3,4,5,5,6,6,4,9,3,2]
var res = [...new Set(arr)]
或者
let arr = [1,2,3,4,5,5,6,6,4,9,3,2]
var res = Array.from(new Set(arr))
考察冒泡排序;
js:
for方法
var arr = [3,4,2,8,4,4,22,2,5]
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < i+1; j++) {
if (arr[i] < arr[j]) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for-in
var arr = [3,4,2,8,4,4,22,2,5]
for (var i in arr) {
for (var j in arr) {
if (arr[i] < arr[j]) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
jQuery:没有找到明朗的方法,我待会再试
在这里插入代码片
由于我在代码中使用了 for in,面试官问到for in和for循环的区别:
1:for-in遍历的是对象的属性名称,for是对数组元素进行循环,不能引用于非数组对象
2:使用for循环比for in遍历的快
for of 和forEach 只会循环数组本身的元素
结论:不能一概而论,平时就使用for of forEach较好。
面试官让用jquery实现一次冒泡排序
简答题:get和post有什么区别:
1,get回退对浏览器无害,post对浏览器是有害的,回退会再次提交请求。
2,get会被浏览器主动缓存,而post不会,除非手动设置。
3,get的url有长度限制,post没有。
4,get请求参数会被完整保留在历史记录中,而post的参数不会。
5,get的参数是放在url中的,而post是放在request body中的。
问了我一个问题,直接赋值后,改动这个赋值后的值,会不会影响之前的值:答案是会的。
var a = {string1: 5};
var b = a;
b.string1 = 10
console.log(a) //{string1: 10} a 和 b 指向的是同一个原型,因此改动b 会影响 a。对象本身是引用类型,是浅拷贝,传递的是一个地址
如何改进这个问题:使用Object.assign()
let obj1 = {
a: 0,
b: {
c: 0
}
}
let obj2 = JSON.parse(JSON.stringify(obj1))
xhr(type, url, true) true是异步;false是同步
AMD: 适用于浏览器端的异步模块加载
Common.js: 适用于服务器端的同步模块加载
问我知不知道节流和防抖,用于什么场景
求n项和
在这里插入代码片
写一个倒计时,且可以暂停
<div id="app">
<button v-on:click="pause">暂停</button>
</div>
timeOut () {
this.clock = setInterval(() => {
let that = this
that.num--
console.log(that.num)
}, 1000)
},
pause() {
clearInterval(this.clock)
}
},
mounted() {
this.timeOut()
}
旋转30deg,放大两倍
div {
width: 100px;
height: 100px;
background: black;
}
div:hover {
transform:rotate(30deg) scale(2);
-webkit-transform:rotate(30deg) scale(2);
-moz-transform:rotate(30deg) scale(2);
-o-transform:rotate(30deg) scale(2);
-ms-transform:rotate(30deg) scale(2);
}