在jQuery

时间:2017-02-14 10:50:42

标签: javascript jquery

如何在jQuery中搜索ID时删除相同的值queryString,ID传递textarea并在搜索时调用API。搜索类似的IDs时,它会显示两个相似的项目,因此如果我可以删除相同的queryString值,则会阻止它获取类似的项目。

QueryString看起来像这个Product?id=1&id=1然后呈现项目两次。

textarea

获取值
var getVal = $('textarea.input_' + inputSearch.name).val();
if (getVal != null && (getVal != "")) {
   let inputValues = getVal
      .split("\n") // allows multiple search using new line
      .filter(function (str) { return str !== "" })
      .join("&" + inputSearch.name + "=");
      // then add it to the overall query string for all searches
      query = query + inputSearch.name + "=" + inputValues + "&";
}

3 个答案:

答案 0 :(得分:1)

您可以在加入之前扩展您对array.prototype.filter()的使用以实现唯一性:

var getVal = $('textarea.input_' + inputSearch.name).val();
if (getVal != null && (getVal != "")) {
   let inputValues = getVal
      .split("\n") // allows multiple search using new line
      .filter(function (elem, index, self) {
        return elem !== "" && index == self.indexOf(elem)
       })
      .join("&" + inputSearch.name + "=");

  // then add it to the overall query string for all searches
  query = query + inputSearch.name + "=" + inputValues + "&";
}

答案 1 :(得分:0)

而不是连接某些值,您可以使用javascript中的地图集合

  • map是一个数据结构,每个键与特定值匹配,如果为特定键两次,任何值都设置为先前值,将始终被覆盖

用于js中的地图集合实现,请查看以下链接

http://www.collectionsjs.com/map

答案 2 :(得分:0)

这个怎么样?它使用一些新的并且不完全兼容的数据结构。但它有效

var query='';
var parameters = new Set();
var getVal = "1\n2\n3";
if (getVal != null && (getVal != "")) {
   getVal.split("\n")
      .filter(function (str) { return str !== "" })
      .map(function(str) {parameters.add(str)});
   let query = new URLSearchParams();
   for(let q of params) {
       query.append(inputSearch.name,q);
   }
   query.toString();
}