基于值的计数

问题描述 投票:0回答:1

提供此URL

https://www.rositarococo.com/gracias.html?hwA-qty-andrea-cobre=2&hwA-qty-sol=1&hwA-qty-valen=1&hwA-qty-mo%C3%B1o-2=1&entry.1471599855=38-andrea-cobre%2C%2037-mo%C3%B1o-2%2C%2036-sol%2C%2036-valen%2C%20&entry.1460904554=sebastian%20flichtentrei&entry.53830725=1156566&entry.1465946249=sflich86%40gmail.com&entry.978809450=TARJETA%20DE%20CR%C3%89DITO&entry.951592426=lavalle%20322&entry.1743418466=ramos%20mejia&entry.59648134=bs%20as&entry.1005165410=1704&entry.541001873=32420573&entry.17650825=A%20DOMICILIO&entry.1209868979=https%3A%2F%2Fwww.rositarococo.com%2F&fvv=1&fbzx=5661184097173102736&pageHistory=0

有几个不同名称的参数,它们包含“数量”

我希望能够用“ qty”计算每个参数的值

在此示例中为

hwA-qty-andrea-cobre=2
hwA-qty-sol=1
hwA-qty-valen=1
hwA-qty-mo%C3%B1o-2=1

结果将是:5

我不知道如何选择所有包含“数量”的参数值

要访问我使用的URL参数:

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = window.location.search.substring(1),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
        }
    }
};

但是然后我不知道如何访问包含数量的所有参数,并可能使用通配符将所有值加在一起汇总为一个变量?

var qtyparameter = getUrlParameter('*qty*');
javascript
1个回答
0
投票

使用正则表达式和.test()方法。

由于要获取所有匹配的参数,因此无法在参数匹配时立即返回,因此需要返回所有值的数组。


function getMatchingUrlParameters(regexp) {
  var sPageURL = window.location.search.substring(1),
    sURLVariables = sPageURL.split('&'),
    sParameterName,
    i,
    results = {};

  for (i = 0; i < sURLVariables.length; i++) {
    sParameterName = sURLVariables[i].split('=');
    if (sParameterName[0].test(regexp)) {
      results[sParameterName[0]] = decodeURIComponent(sParameterName[1]);
    }
  }
  return results;
}

然后您可以打电话

var qtyParams = getMatchingUrlParameters(/-qty-/);

结果将是:

{
  "hwA-qty-andrea-cobre": "2",
  "hwA-qty-sol": "1",
  "hwA-qty-valen": "1",
  "hwA-qty-mo%C3%B1o-2": "1"
}

然后您可以将属性的所有值加起来。

© www.soinside.com 2019 - 2024. All rights reserved.