笔试中经常出现的js数组排序与去重算法

数组排序比较常用的:冒泡排序、快速排序、sort()方法排序;数组去重方法也有很多。

冒泡排序:

从数组中随便拿一个数与后一位比较,如果前者比后者大,那么两者交换位置,从而遍历数组可以得到排序的效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var arr = [1, 9, 4, 50, 49, 6, 3, 2];
function test(){
for (var i = 0; i < arr.length - 1; i++){
for (var j = i + 1; j < arr.length; j++){
var tempi = arr[i]; //获取第一个值,并与后一个值比较
var tempj = arr[j];
if (tempi > tempj){
arr[i] = tempj;
arr[j] = tempi;//如果前一个值比后一个值大,那么相互交换
}
}
}
console.log(arr); //return arr;
}
test();//调用函数

阅读全文 >>

深刻理解JavaScript---闭包

闭包是指那些能够访问独立(自由)变量的函数 (变量在本地使用,但定义在一个封闭的作用域中)。换句话说,这些函数可以“记忆”它被创建时候的环境。——这句话其实有点难以理解。我觉得应该用一些例子来理解闭包的含义。

  • 闭包#1

先来看一个函数:

1
2
3
4
5
6
function f(){
var b = "b";
return function(){
return b;
}
}

这个函数含有一个局部变量b,它在全局空间里面是不可见的。而f()的返回值是另一个匿名函数,该函数有自己的私有的空间,可以访问f()的空间和全局空间,所以b对它来说是可见的。

1
2
var n = f();
n();//此时控制台输出"b"

因为f()是一个全局函数,它可以在全局空间被调用,当然也可以将其返回值赋值给另一个全局变量n,从而生成一个可以访问f()私有空间的新的全局函数。

阅读全文 >>