检查Object是否包含Different Object JS中的Same键的任何值

时间:2017-06-01 09:46:31

标签: javascript node.js

对不起邮寄感到抱歉。问题陈述

我有这个网址 -

http://www.XXXXX.com/mobiles-tablets/mobiles/apple?q=&idx=letsTango_default_products&p=0&hFR%5Bcategories.level0%5D%5B0%5D=Mobiles%20%26%20Tablets%20%2F%2F%2F%20Mobiles%20%2F%2F%2F%20Apple&nR%5Bprice.AED.default%5D%5B%3C%3D%5D%5B0%5D=2560&is_v=1

我必须在对象中提取所有查询参数,例如键值对。

然后检查来自不同对象的任何具有相同键的查询参数是否具有任何匹配值。

这是我的解决方案,我是java脚本的新手,所以我想确认这是否是正确的方法。 到目前为止,该解决方案适用于所有情况。只是让我知道性能是否可以提高或更好的方式。

解决方案的小提琴链接 - http://jsfiddle.net/rahulsingh09/tqpzv/6/

var callingUrl = "http://www.letstango.com/mobiles-tablets/mobiles/apple?q=&idx=letsTango_default_products&fsrc=sort_price,brand&p=0&hFR%5Bcategories.level0%5D%5B0%5D=Mobiles%20%26%20Tablets%20%2F%2F%2F%20Mobiles%20%2F%2F%2F%20LG&nR%5Bprice.AED.default%5D%5B%3C%3D%5D%5B0%5D=2560&nR%5Bprice.AED.default%5D%5B%3E%3D%5D%5B0%5D=1138&is_v=1";

if (callingUrl) {
  var queryParam = {};
  var split = callingUrl.split("?");
  if (split.length > 1) {
    var query = split[1].split("&");
    if (query.length > 1) {
      _.each(query, function(q) {
        var key = decodeURIComponent(q.split("=")[0]);
        var value = decodeURIComponent(q.split("=")[1]);
        if (value.indexOf(",") !== -1) {
          value = value.split(",");
        }
        queryParam[key] = value;
      })
    }
  }
}

if (!_.isEmpty(queryParam)) {
  var value = {
    "fsrc": ["brand"]
  };
  for (var key in value) {
    if (value.hasOwnProperty(key)) {
      for (var k in queryParam) {
        if (queryParam.hasOwnProperty(k)) {
          if (k === key) {
            var index = _.intersection(value[key], queryParam[k]);
            if (index.length > 0) {
              console.log("Matches");
            } else {
              console.log("fails");
            }
          }
        }
      }
    }
  }

请注意 - 网址可能会因浏览器网址而异。

在此先感谢,我希望为此问题获得最佳性能。

0 个答案:

没有答案