使用lodash解析URL字符串

Myr*_*huk 9 javascript lodash

如何仅使用lodash函数解析URL字符串而不使用任何回调?

防爆.

var rawUrl = “?a=b454&c=dhjjh&f=g6hksdfjlksd..”
Run Code Online (Sandbox Code Playgroud)

我目前的解决方案是

var answer = _.reduce(_.split(_.replace(rawUrl,'?',''), '&'), function(result, ev) {
    (result[ev.split('=')[0]] || (result[ev.split('=')[0]] = [])).push(ev.split('=')[1]);
    return result;
}, {});
Run Code Online (Sandbox Code Playgroud)

但是,这里还有一个回调.

sta*_*las 18

避免回调使用_.partial,_.partialRight以及其他lodash方法来处理函数

_.chain(rawUrl)
    .replace('?', '') // a=b454&c=dhjjh&f=g6hksdfjlksd
    .split('&') // ["a=b454","c=dhjjh","f=g6hksdfjlksd"]
    .map(_.partial(_.split, _, '=', 2)) // [["a","b454"],["c","dhjjh"],["f","g6hksdfjlksd"]]
    .fromPairs() // {"a":"b454","c":"dhjjh","f":"g6hksdfjlksd"}
    .value()
Run Code Online (Sandbox Code Playgroud)

  • 凉爽的!将此与`window.location.href` 一起使用,我将其调整为`_.chain(window.location.href).split('?').nth(1).split('&').map(_.partial (_.split, _, '=', 2)).fromPairs().value()` (2认同)

chr*_*isz 5

我知道您要求使用 lodash 解决方案,但也许阅读问题的人可能还想查看URLSearchParams,它帮助我使用比 ES6 方法更少的代码,并避免了 lodash。

const params = new URLSearchParams(window.location.search);
Run Code Online (Sandbox Code Playgroud)

访问名为“a”的查询参数

let a = params.get('a');
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams