近三天,参加了几场面试及笔试,考察javaScript基础,现回顾了部分试题:
1、js中 “5”+4=?//"54"
2、js中void(0)=?//undefined
3、js中NaN*4=?//NaN
4、js中alert(5*015===5.075)//false
5、js中null*4.5=?//0
6、js中13>>2=? -13>>2=?//3 -4
7、js中13|5=? 13&5=?//13 5
8、js中hello world,实现hello+1 world+1?
var str='hello world';
function jNum(arr){
var arr=str.split(/\s+/);
for (var i = 0, len = arr.length; i < len; i++) {
arr[i]+="+1";
}
return arr.join(' ');
}
9、js中统计一个字符串出现最多的字母
var str="abcdefwwwwwww";
var arr=str.split(""); // 转换为数组
arr=arr.sort(); // 排序
var c=1; // 记录出现次数
var arr1=[];
var maxmore="";
for(var i=0;i<arr.length;i++){
if(arr[i]===arr[i+1]){
maxmore=arr[i];
c++;
}
else{
arr1[c]=maxmore;
c=1
}
}
console.log('最多的字母'+maxmore);
console.log('最多的字母次数'+ (arr1.length-1));
10、js中实现数组去重
//方法一:利用对象的键值对
function unique(arr){
if (!Array.isArray(arr)) return arr;
var o={};
var res=[];
for (var i = 0,len = arr.length; i < len; i++) {
if(!o[arr[i]]){
o[arr[i]] = 1;
res.push(arr[i]);
}
}
return res;
}
//方法二利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
function unique(arr){
if (!Array.isArray(arr)) return arr;
var res=[];
for (var i = 0,len = arr.length; i < len; i++) {
if(res.indexOf(arr[i])==-1){
res.push(arr[i]);
}
}
return res;
}
方法三:利用filter
function unique(arr){
return arr.filter((item,i)=>arr.indexOf(item)===i);
}
//方法四:利用 ES6 的 Set 对象 和 Array.from 方法
function unique(arr){
if (!Array.isArray(arr)) return arr;
if (arr.length < 2) return arr;
return Array.from(new set(arr));
}
//方法五:思路是先把数组排序,然后比较相邻的两个值
function unique(arr){
var res=[];
if (!Array.isArray(arr)) return arr;
arr.sort();
for (var i = 0,len=arr.length; i < len; i++) {
if(arr[i]!==arr[i+1]){
res.push(arr[i]);
}
}
return res;
}
11、js中ab变量交换,不使用中间变量?
//方法一,巧用数组
function swap(){
var a = 1, b = 2;
a=[b,b=a][0]
console.log("a="+a);
console.log("b="+b);
}
//方法二,解构赋值
function swap(){
let a = 1,b = 2;
[a,b] = [b,a];
console.log("a="+a);
console.log("b="+b);
}
//方法三,数学运算
function swap(){
let a = 1,b = 2;
a = a + b;//a=3,b=2
b = a - b;//a=3,b=1
a = a - b;//a=2,b=1
console.log("a="+a);
console.log("b="+b);
}
12、js中实现字符串倒序排列
//利用数组的反转方法
var num = 123456789;
function rev(){
var str = num+"";
return str.split("").reverse().join("");
}
console.log(rev(num));
13、js中循环方式替换空白字符
// 循环方式替换空白字符
var str = " cba xyz m n r ttt";
var res = "";
for(var i=0; i<str.length; i++){
var c = str.charAt(i);
res += c.trim();
}
console.log(res);
以上部分试题及答案,如有不当之处,请指正,谢谢!