JS

js题目解答

Posted by monkey-yu on August 13, 2020 | 浏览量: -

1.将多维数组降为一维数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var arr1 = [1,2,3,[4,5,[6,7,8],[9,[11]]],[10]];
// 方法一 :手写flatDeep函数
let flatDeep = (arr) => {
    return arr.reduce((res,cur)=>{
        if(Array.isArray(cur)){
            return [...res,...flatDeep(cur)]
        }else {
            return [...res,cur];
        }
    },[])
};
flatDeep(arr1); 
// 方法二: Array.prototype.flat(num) 其中num 表示维度,也可以使用Infinity
arr1.flat(Infinity);
// 或者 如下。因为arr1是3维数组
arr1.flat(3);
// 结果输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 10]

2.给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。

例如: 输入16,返回true

​ 输入5,返回false

1
2
3
4
var isPowerOf4= function(num){
  return Math.log10(num) / Math.log10(4) % 1 === 0
};
isPowerOf4(16);    // true

换底公式: log10(16) / log10(4) = log4(16) = 4

3.用正则实现trim()

1
2
3
4
5
6
7
function trim(string){
  return string.replace(/^\s+|\s+$/g,'')
}
// 或者
String.prototype.trim = function(string){
  return this.replace(/^\s+|\s+$,'')
}

正则符号解释:

  • ^ : 匹配输入字符串的起始位置
  • \s :任何空白字符串
  • +:匹配前面的子表达式一次或多次
  • :或者,两项之间的一个选择
  • $: 匹配字符串的结束位置

4.10进制转换

给定10进制数,转换成[2-16]进制区间数

1
2
3
4
5
6
7
8
9
10
11
12
function Conver(number,base=2){
  let rem,res='',digits='0123456789ABCDEF', stack =[];
  while(number){
    rem = number % base;
    stack.push(rem);
    number = number.floor(number / bbase);
  }
  while(stack.length) {
    res += digits[stack.pop()].toString();
  }
  return res;
}

5.手写AJAX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var request = function(){
  var xmlHttp;
  if(window.XMLHttpRequest){
    xmlHttp = new XMLHttpRequest();
  }else {
    // 老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlHttp.open('GET','/api/test',true);
  xmlHttp.onreadystatechange = function(){
    if (xmlHttp.readyState === 4 && xmlHttp.status === 200){
      console.log(xmlHttp.responseText)
    }
  };
  xmlHttp.send()
}

AJAX是在不重新加载整个页面的情况下,与服务器进行数据交换并且更新部分网页内容。

AJAX不需要任何浏览器插件,只要用户允许javascript在浏览器上执行即可。

AJAX = 异步的javascript + XML