2016-08-16 50 views
0

我正在通过分隔数组中的每个值和其工作正常进行多重搜索。但是,如果用户输入一个空值,则由于该值为空值而中断搜索,它只会返回为数组集合中的空字符串。如何修剪/删除javascript中的数组集合中的空字符串

有没有办法修剪或删除空值?

https://plnkr.co/edit/NXrBtMseWpKrL41K5ojp?p=preview

var idInputValue = document.getElementById("search").value.split('\n'); 
    console.log(idInputValue); 

    if (idInputValue) { 
     var ids = idInputValue; 
     var queryString = "?"; 
     for (var i = 0; i < ids.length; i++) { 
      var id = ids[i]; 
      if (i > 0) { 
       queryString += "&"; 
      } 
      queryString += ("id=" + id); 
     } 
     return queryString; 
    } 
+4

或者http://stackoverflow.com/q/14453670/215552 –

回答

2

试试这个

for (var i = 0; i < ids.length; i++) { 
     var id = ids[i]; 
     if (id && id.length > 0) { 
      queryString += "id=" + id + "&"; 
     } 
    } 
    return queryString.substring(0, queryString.length-1); 

工作小提琴:https://jsfiddle.net/codeandcloud/ky60oc3t/

+0

我在想,可能不会把条件合适的地方,因为它只是限制在&号去,所以哟你有'...&id = id = 2&...' –

+0

这给了我未定义的长度 – nCore

+0

@naveen你可以更新plnkr,因为我已经改变了我的forloop这个,仍然给这个空字符串。 – nCore

1

的方法Array.prototype.filter存在只是为了这个原因,从数组中过滤掉不需要的值。您可以简化您的搜索方法一样,所以如果你想:

function search() { 
    var searchInput = document.getElementById("search"); 
    return "?id=" + searchInput.value 
    .split("\n") 
    .filter(function(str) { 
     return str !== "" 
    }) 
    .join("&id="); 
} 
+0

谢谢你看起来很整齐。 – nCore

0

我使用它来过滤掉空输入值:

var str = idInputValue.replace(' ', ''); 

if(str == '') { 
    // string is blank 
    console.log('here'); 
} 

然后,你可以通过阵列中的每个值循环检查他们像这样:

for (var i = 0; i < ids.length; i++) { 
    var id = ids[i]; 
    var str = id.replace(' ', ''); 

    if(str !== '') { 
     // string is blank 

     if (i > 0) { 
      queryString += "&"; 
     } 
     queryString += ("id=" + id); 
    } 
} 
相关问题