js随笔

1.var str=‘sfdsffffffffdd’;判断每个字符出现的次数
解析:先把遍历s字符串通过letter变量将字符串中不同项存进对象obj中再通过for in 遍历对象

var str='sfdsffffffffdd';
    let obj={};
    let letter,key,num;
    for(let i=0;i

在这里插入图片描述

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

在这里插入图片描述

你可能感兴趣的:(js)