使用 lodash 解析 URL 字符串

新手上路,请多包涵

如何仅使用 lodash 函数解析 URL 字符串,而内部没有任何回调?

前任。

 var rawUrl = “?a=b454&c=dhjjh&f=g6hksdfjlksd..”

我目前的解决方案是

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

但是,这里仍然存在一个回调。

原文由 Myroslava Kozachuk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.6k
2 个回答

避免回调使用 _.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()

原文由 stasovlas 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 const params = new URLSearchParams(window.location.search);

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

let a = params.get('a');

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

原文由 chriszichrisz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏