面试题(JS逻辑考题)

68 阅读2分钟

JS逻辑考题

1 冒泡排序
var arr = [32,13,43,1,3,44,51,6];
var len = arr.length;
for(var i=0;i<len;i++){
	for(var j=i+1;j<len;j++){
		if(arr[i] > arr[j] ){
			var num = arr[i];
			arr[i] = arr[j];
			arr[j] = num; 
		}
	}
}
console.log(  arr  );
2 提取url中的参数

方式一:

const urlParams = new URLSearchParams(window.location.search);
const search = urlParams.get('sc');
console.log(  search )

方式二:

function getQueryParams() {
  // 创建一个新的URL对象
  const urlObj = new URL(window.location.href);
  // 使用URLSearchParams获取查询参数
  const params = new URLSearchParams(urlObj.search);
  // 使用forEach遍历所有参数
  const queryParams = {};
  params.forEach((value, key) => {
    queryParams[key] = value;
  });
  return queryParams;
}
// 提取URL参数
const queryParams = getQueryParams();
console.log( queryParams );
3 请编写一个函数“getSortNum()”实现随机选取10-100之间的10个数字,存入一个数组,并进行升序降序,返回该结果
var iArray = [];
function getSortNum( start , end ){
    var iChoice = end - start + 1;
    var res = Math.floor( Math.random() * iChoice + start );
    return res;
}
for( var i=0;i<10;i++){
    iArray.push( getSortNum(10,100) );
}
iArray.sort( function(a,b){
    return a>b;
})
console.log( iArray );
4 使用javascript实现paddingNumber方法:分隔数字,每隔三位使用逗号分隔一次,参数是Number,返回分隔后的字符串。
function paddingNumber(num) {
  return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

paddingNumber(1234.56); //reutrn '1,234.56'
paddingNumber(123456789); //reutrn '123,456,789'
paddingNumber(-987654.3); //reutrn '-987,654,3'


解释:(\d{3})+(?!\d) 表示匹配3位数字一次或者多次且满足于以上匹配的后面不能跟着数字
解释:'1234567.89'.replace(/\B(?=(\d{3})+(?!\d))/g, ",")匹配到12,23等之间的位置,且满足于匹配的位置后面跟着3位数字一次或者多次且满足以上匹配的后面不能跟着数字
5 两数之和
var twoSum = function(nums, target) {
    let map = new Map();
    for( let i=0;i<nums.length;i++ ){
        x = target - nums[i];
        if( map.has(x) ){
            return [ map.get(x) , i ];
        }
        map.set( nums[i] , i );
    }

};

twoSum( [2,7,11,15] , 9 )
6 编写一个函数printNumbers(n),以异步方式从1打印到n,确保数字之间有一秒的延迟
function printNumbers( n ){
	for( let i=1;i<=n;i++){
		setTimeout(()=>{
			console.log( i );
		},1000 * (i-1) );
	}
}
printNumbers( 5 );
7 请使用2种拷贝方法将arr的数据拷贝在arr1中
//方法1
var arr = ['1','2','3'];
var arr1 = arr.concat();

//方法2
var arr = ['1','2','3'];
var arr1 = [...arr];