是否有代碼大小的任何具體限制嗎?我的意思是,這不是代碼高爾夫或其他任何東西,那麼爲什麼不直接以簡單的方式來做呢?
首先,你可以用一個簡單的正則表達式記號化這個
var search_string = "hello before: 01/01/17 after: 01/01/2015";
var regex = /(?:(before|after)\:\s*)?([^ ]*)/g
var token = null;
while ((token = regex.exec(search_string)) != null) {
然後,你可以把他們安排到你想要的任何數據結構。例如,我們可以把過濾器到一個單獨的對象,像這樣:
var filters = {};
var words = [];
//...
if (token[1])
filters[token[1]] = token[2];
else
words.push(token[2]);
之後,你可以操縱這些結構你想
words.sort();
if (filters['before']) words.push(filters['before']);
if (filters['after']) words.push(filters['after']);
return words;
任何辦法,我不知道爲什麼你」我希望這樣安排,但這會使事情變得統一。或者,你可以在一個更直接的方式使用它們:
var before = Date.parse(filters['before'] || '') || false;
if (before !== false) before = new Date(before);
var after = Date.parse(filters['after'] || '') || false;
if (after !== false) before = new Date(before);
function isDocumentMatchSearch(doc) {
if (before !== false && doc.date > before) return false;
if (after !== false && doc.date < after) return false;
for (var i = 0; i < words.length; i++) {
if (doc.title.indexOf(words[i]) < 0 &&doc.text.indexOf(words[i]) < 0) return false;
}
return true;
}
因爲你沒給很多的信息,你通過搜索什麼,它的存儲,等等等等的數據類型和存儲類型,這是我能提供的最好的。
我想通了,如何解決這個字的時候是之前的任何過濾器,但我無法分割了繩子,如果這個詞是在字符串 –