1.var str=‘sfdsffffffffdd’;判断每个字符出现的次数
解析:先把遍历s字符串通过letter变量将字符串中不同项存进对象obj中再通过for in 遍历对象
var str='sfdsffffffffdd';
let obj={};
let letter,key,num;
for(let i=0;i<str.length;i++){
letter=str[i];
if(!obj[letter]){
obj[letter]=1;
}else{
obj[letter]++;
}
}
console.log(obj);
for(key in obj){
console.log(key+'出现了:'+obj[key]+"次")
}
2.有这样一个URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}。
function serilizeUrl (url) {
// 排除非字符串或空字符串
function checkString (str) {
if (typeof str != 'string' || str == '') {
return false
} else {
return true
}
}
const result = {}
// 如果url是字符串,且字符串中含有?,则获取?后面的字符串,且该字符串不为空字符串
if (checkString(url) && url.indexOf('?') > -1 && checkString(url.split('?')[1])) {
url.split('?')[1].split('&').map(paramString => {
// 依据&分解参数,将参数分解成key-value组成的数组,如果value为空,则默认为undefined
if (paramString.indexOf('=') > -1) {
return paramString.split('=')
} else {
return [paramString, undefined]
}
}).forEach(paramsArr => {
// 将分解的结果(一个二维数组),添加到对象上
Object.defineProperty(result, String(paramsArr[0]), {
value: paramsArr[1],
writable: true,
enumerable: true,
configurable: true
})
})
}
return result
}
serilizeUrl('http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e')