JavaScript 常见面试题
此文内容多为 JavaScript 对数组理解及运用。
1、如何消除一个数组里面重复的元素?
var arr = [1, 2, 3, 3, 4, 4, 5, 5, 6, 1]; var newArr =[]; for(var i =0; i<arr.length; i++){ if(newArr.indexOf(arr[i])<0){ newArr.push(arr[i]); } } console.log(newArr);
2、es6 利用 set 数组去重方法
changeReArr=(arr)=>{ // 利用set将数组转化成set数据,利用Array from 将set数据转化成数组 return Array.from(new Set(arr)); } console.log(changeReArr([3,3,45,6,7,8,9,5,4]));
3、es6 set 第二种方法
changeReArr2=(arr)=>{ // 利用...扩展运算付将set中的值遍历出来重新定义一个数组 // ... 是利用for...of 遍历的 return [...new Set(arr)] } console.log(changeReArr2([3,3,45,6,7,8,9,5,4]));
4、实现数组的随机排序
// 方法一 var arr = [1,2,3,4,5,6,7,8,9,10]; function randSort1(arr){ for(var i = 0,len = arr.length;i < len; i++ ){ var rand = parseInt(Math.random()*len); var temp = arr[rand]; arr[rand] = arr[i]; arr[i] = temp; } return arr; } console.log(randSort1(arr)); // 方法二 var arr = [1,2,3,4,5,6,7,8,9,10]; function randSort2(arr){ var mixedArray = []; while(arr.length > 0){ var randomIndex = parseInt(Math.random()*arr.length); mixedArray.push(arr[randomIndex]); arr.splice(randomIndex, 1); } return mixedArray; } console.log(randSort2(arr)); // 方法三 var arr = [1,2,3,4,5,6,7,8,9,10]; arr.sort(function(){ return Math.random() - 0.5; }) console.log(arr);
5、生成十个10到100的随机数 并添加到数组里 并排序
var iArray = []; function getRandom(istart,iend) { var ichoice = iend - istart; return Math.floor(Math.random() * ichoice + istart); } for(var i =0; i<10; i++){ var nums = getRandom(10,100); if(iArray.indexOf(nums) < 0){ iArray.push(nums); }else{ iArray.push(getRandom(10,100)); } } iArray.sort(); console.log(iArray);
6、把两个数组合并,并删除第二个元素。
var arr1 = ['a','b','q']; var arr2 = ['w','e','r']; var meshArr = arr1.concat(arr2); meshArr.splice(1,1); console.log(meshArr);
7、提取URL中的各个GET参数
var urlStr = "http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e"; function serilizeUrl(url) { var result = {}; url = url.split("?")[1]; var map = url.split("&"); for(var i = 0; i<map.length; i++){ result[map[i].split("=")[0]] = map[i].split("=")[1]; } return result; } console.log(serilizeUrl(urlStr));
8、输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26
var date = new Date(); var dateYear = date.getFullYear(); var dateMonth = date.getMonth() + 1; dateMonth = dateMonth < 10 ? '0'+dateMonth : dateMonth; var dateDays = date.getDate(); dateDays = dateDays < 10 ? '0'+dateDays : dateDays; console.log(dateYear + '-' + dateMonth + '-' + dateDays);
The most terrible person in the world is yourself