笔试是能力表现得第一个体现,我几乎每次面试都有笔试题,来来回回好几次,今天先整理几道题。
1、数组去重
这是一个简单而且出现率达到90%的题目,我也会去看好几种方法,真的是越深入学js,答案越是多。
这里也只是说一种,用indexOf()方法:w3c这样定义它:indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。
语法
string.indexOf(searchvalue,start)
searchvalue 必需。规定需检索的字符串值。
start 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 string Object.length - 1。如省略该参数,则将从字符串的首字符开始检索。
代码:
//判断返回数组的索引是否相等,就是它第一次出现的位置
var arr1 = [1, 23, 44, 1, 1, 2, 3, 4, 3, 4];
var newarr = [];
function unique(arr){
//循环
for(var i = 0; i < arr.length; i ++){
//console.log(arr.indexOf(arr[i]));//返回的是索引
if(arr.indexOf(arr[i]) != i){//如果index值不相等,则把它放进数组
arr.splice(i,1);
i--;
}
}
return arr;
}
var a1 = unique(arr1);
console.log(arr1);
console.log(a1);
//[ 1, 23, 44, 2, 3, 4 ]
//[ 1, 23, 44, 2, 3, 4 ]
es6方法:
//Set数据结构,它类似于数组,其成员的值都是唯一的
//Set 本身是一个构造函数,用来生成 Set 数据结构。
function unique2(array) {
return Array.from(new Set(array)); // 利用Array.from将Set结构转换成数组
}
console.log(unique2([1, 4, 2, 9, 3, 5, 6, 7, 4]));
// 结果是[ 1, 4, 2, 9, 3, 5, 6, 7 ]