昨晚做了一个公司的笔试题,里面有2道编程题,记录一下。
1、定义一个函数,接收不定数量的数组作为参数,将这些数组合并为一个数组。
方法有很多,我这里用ES6的 剩余参数 和 扩展运算符 解决。
function sumArray1(...array){
let arr=[];
array.forEach(item=>arr=[...arr,...item])
return arr;
}
2、定义一个函数,函数参数为一个url格式的字符串,把字符串的查询部分转换为如下格式返回。
例:传入参数 https://mp.csdn.net/try/try.php?filename=try&name=aa,返回格式:
{
filename:"try",
name:"aa"
}
思路:
1、先获取查询部分字段,即 ? 后的字符串,如:filename=try&name=aa。
2、将此部分的字符串以 & 符号分割为字符串数组,如["filename=try", "name=aa"]。
3、将数组中每一元素以 = 符号分割为字符串,第一个值为 返回对象的key,第二个值为 返回对象的value。
function getQueryObj(str){
let obj={};
let s=str.slice(str.indexOf('?')+1);//获取查询部分
let arr=s.split('&');
arr.forEach(item=>{
let value=item.split('=');
obj[value[0]]=value[1];
})
return obj;
}