前端面试总结--数据结构与算法一

数组

数组是比较简单的内容,这里介绍数组经常使用的操做。
数组的建立和初始化很是简单,你能够经过var arr = new Array()或者var arr = new Array('a','b','c')来建立一个数组。固然也能够简单的var arr = [];这也是最一般的用法。vue

添加和删除元素

须要在数组末端追加元素,咱们能够简单的使用number[number.length] = 10;或者位面一般用到的number.push(10)。若是是在数组起始端添加元素,位面可使用number.unshift(0).
相应的在数组中删除元素,咱们能够用number.pop()(从末端删除),或者number.shift()(从起始端删除)。还有咱们也能够经过设置数组的长度来删除数组,好比var number = [1,2,3,4];number.length=3;来删除最后一个元素。
这里还有一个很经常使用的方法来添加,删除和修改元素,同时它也能够克隆数组。这个就是splice.
var number = [1,2,3];
number.splice(1,1,4);//修改index为1的以后1位元素为4
number.splice(1,1,4);//将4添加到index为1的元素后面
number.splice(1,1);//删除index为1后1位的元素
var clone = number.splice(0);//用于克隆数组数组

数组经常使用方法

  1. concat--链接2各或者更多数组,并返回结构。函数

  2. every--对数组中的每一项运行给定函数,若是该函数对每一项都返回true,则返回true.code

  3. filter--对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。对象

  4. forEach--对数组中的每一项运行给定函数。排序

  5. join--将全部的数组元素链接成一个字符串。索引

  6. indexOf--返回第一个与给定参数相等的数组元素的索引,没有则返回-1ip

  7. lastIndexOf--返回在数组中搜索到的与给定参数相等的元素的索引里最大的项。字符串

  8. map--对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。get

  9. reverse--颠倒数组中元素的顺序。

  10. slice--传入索引值,将数组对应索引范围内的元素做为新数组返回。

  11. some--对数组中的每一项运行给定函数,若是任一项返回true,则返回true。

  12. sort--按照字母顺序对数组排序,支持传入指定排序方法的函数做为参数。

  13. toString--将数组做为字符串返回

  14. valueOf--将数组做为字符串返回

数组合并

能够经过concat方法来合并多个数组。concat方法能够向一个数组传递数组,对象或者元素。数组会按照该方法传入的顺序链接指定数组。

var zero = 0;
var positive = [1,2,3];
var negative = [-3,-2,-1];
var numbers = negative.concat(zero,positive);

迭代器函数

前面介绍了不少用于迭代数组的函数。下面来举一个例子,有一个数组,它是从1到10.找出数组中的偶数。

var isEven = function(x){
  console.log(x);
  return (x%2==0) ? true : false;
}
var numbers = [1,2,3,4,5,6,7,8,9,10];

首先咱们尝试用every.它会迭代数组中的每个元素,直到返回false。

numbers.every(isEven);

这样数组numbers的第一个元素是1,它不是偶然,函数返回false。every执行结束了。
而后在看some.它与every相似,只是它运行到true以后中止执行。这样当执行到2的时候,函数返回true便中止了。

numbers.some(isEven);

再看map函数,它会返回每一个元素处理后的结果。

var result = numbers.map(isEven);

结果是[false,true,false,true,false,true,false,true,false,true].
还有一个filter方法,它返回的新数组由使函数返回true的元素组成:

var eventNumbers = numbers.filter(isEven);

这样evenNumbers数组中的元素都是偶数[2,4,6,8,10].
最后再看一下reduce方法。它接受一个函数做为参数,这个函数后4个参数:previousValue,currentValue,index,array.这个函数会返回一个将被叠加到累加器的值,reduce方法中止执行后会返回这个累加值。若是是对一个数组中的全部元素求和,这个方法颇有用。

搜索和排序

对于排序咱们可使用sort方法,默认的sort方法会对数字按大小排序,对字符串按字母表排序,好比

numbers.sort()

或者能够自定义排序方法

numbers.sort((a,b)=>{return a-b});

对于自定义字符串的排序

var names = ['Ana', 'ana', 'john', 'John'];
names.sort(function(a,b){
    if(a.toLowerCase()<b.toLowerCase()){
        return -1;
    }
    if(a.toLowerCase()>b.toLowerCase()){
        return 1;
    }
    return 0;
}

参考书籍:Learning Javascript Data Structures and Algorithms

推荐一个找vue,angular组件的轮子工厂

相关文章
相关标签/搜索