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];