【问题标题】:Split url into tab in javascript在javascript中将url拆分为选项卡
【发布时间】:2015-01-09 10:10:29
【问题描述】:

输入:

"/desh/HRTY/THR/TDR/2015-01-09?passengers=STANDARD:1&returnDate=2015-01-10&max=0&withThac=false"

javascript:

var params = {};
var paramDelim = link.indexOf('?');
var parmeters = link.substring(paramDelim + 1, link.length);
var parts = parmeters.split('[&=]');

我的 js 代码的输出:

0: "passengers=STANDARD:1&returnDate=2015-01-10&max=0&withThac=false"
length: 1

我想将我的 url 拆分成一个带有 key:value 的地图

输出:

origin:THR
destination:TDR
goDate:2015-01-09
passengers:STANDARD:1
returnDate:2015-01-10
max:0
withThac:false

我的代码在输出中不完全符合我的要求,出了什么问题?

【问题讨论】:

  • 在拆分中找不到“[&=]”,因此这是预期的行为
  • 您正在使用包含 4 个字符 [&=] 的字符串作为分隔符进行拆分。由于输入不包含[&=],因此您只会得到一个大字符串作为结果。试着把它放在像...split(/[&=]/) 这样的正则表达式中。这个stackoverflow.com/a/3560051/1389366 很好地解释了你的问题。

标签: javascript


【解决方案1】:

你应该分开

var params = parmeters.split('&')

然后拆分你得到的所有值

for (var i = 0,len = params.length; i<len;i++){
    var data = params[i].split("=", 2);  // Max 2 elements

    var key = data[0];
    var value = data[1];
    ...
}

【讨论】:

    【解决方案2】:

    我认为你的字符错误

    var params = {};
    var paramDelim = link.indexOf('?');
    var parmeters = link.substring(paramDelim + 1, link.length);
    /*--> i think used regexp. Clear ' Char. --> */var parts = parmeters.split(/[&=]/);
    

    像这样使用..

    祝你好运

    【讨论】:

      【解决方案3】:

      使用 ECMA5 方法并假设您的字符串始终是相同模式的可能解决方案。

      var src = '/desh/HRTY/THR/TDR/2015-01-09?passengers=STANDARD:1&returnDate=2015-01-10&max=0&withThac=false',
          slice = src.split(/[\/|?|&]/).slice(3),
          data = slice.reduce(function (output, item) {
              var split = item.split('=');
      
              output[split.shift()] = split.shift();
      
              return output;
          }, {
              origin: slice.shift(),
              destination: slice.shift(),
              goDate: slice.shift()
          });
      
      document.body.appendChild(document.createTextNode(JSON.stringify(data)));

      【讨论】:

        猜你喜欢
        • 2013-05-01
        • 1970-01-01
        • 2019-11-26
        • 2019-06-01
        • 2022-06-11
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        • 2014-07-19
        相关资源
        最近更新 更多