2017-02-27 82 views
1

我想用表單輸入過濾我的JSON。從空間值JSON過濾陣列

我的篩選:

var as = $(data).filter(function (i,n){return n.name == getname}); 

了 「的getName」 來自每得到一個HTML表單。

樣品JSON:

[ 
{"name":"name1 addition","date":"01.02.2017"}, 
{"name":"name2 addition","date":"05.02.2017"}, 
{"name":"name3 addition","date":"05.03.2017"} 
] 

我的問題是,如果我用一個文本框,並在「名稱」中有一個空間,它不工作造成的空間。我能以某種方式解決這個問題嗎

+1

可以'trim'串擺脫多餘的空格。 –

回答

5

使用test()功能與RegExp在一起。

var json = [ 
 
{"name":"name1 addition","date":"01.02.2017"}, 
 
{"name":"name2 addition","date":"05.02.2017"}, 
 
{"name":"name3 addition","date":"05.03.2017"} 
 
]; 
 

 
function filter(json, name){ 
 
    var reg = new RegExp('name', 'g'); 
 
    var result = json.filter(v => !reg.test(v.name)); 
 
    console.log(result); 
 
} 
 

 
filter(json, 'name2 addition');

+0

@Justin塔代伊感謝您的編輯,但如果我願意接受您的評論:( –

+0

我不明白這是行不通的。因爲它是現在不使用名稱參數。 –

+0

@JustinTaddei'name'是這個函數的參數,而不是對象屬性(: –

0

我一直在玩@KindUser的答案了一段時間,發現它返回每個連json數組中的元素。我對他們的答案做了一些修改以解決問題。

試試這個,看看它是否適合你的更好:

var json = [ 
 
{"name":"name1 addition","date":"01.02.2017"}, 
 
{"name":"name2 addition","date":"05.02.2017"}, 
 
{"name":"name3 addition","date":"05.03.2017"}, 
 
{"name":"name4 addition","date":"05.02.2017"}, 
 
{"name":"name5 addition","date":"05.02.2017"}, 
 
{"name":"name6 addition","date":"05.02.2017"} 
 
]; 
 

 
function filter(json, name){ 
 
    var reg = new RegExp(name, 'g'); 
 
    var result = json.filter(v => reg.test(v.name)); 
 
    console.log(result); 
 
} 
 

 
filter(json, 'name4 addition');