js随笔

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')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值