文字列が取り込まれる配列が与えられます。次の動作が必要です。
foo = []
foo = add_search_string(foo, 'a')
foo は ['a'] に等しい必要があります
foo = add_search_string(foo, 'a')
'a' はすでに検索文字列であるため、foo は ['a'] に等しい必要があります。
foo = add_search_string(foo, 'ab')
'a' は 'ab' の部分文字列であり、したがって削除できるため、foo は ['ab'] と等しい必要があります。
foo = add_search_string(foo, 'a')
上記と同じ理由で、foo は ['ab'] と等しくなければなりません
foo = add_search_string(foo, 'c')
foo は ['ab', 'c'] に等しい必要があります
私の関数は次のようになります。
function add_search_string(search_strings, new_search_string) {
var keep = true;
var new_search_strings = []
$.each(search_strings, function(i, search_string) {
if (new_search_string == search_string) {
keep = false;
} else if (search_string.indexOf(new_search_string) >= 0) {
keep = false;
}
});
if (keep) {
$.each(search_strings, function(i, search_string) {
if (new_search_string.indexOf(search_string) == -1) {
new_search_strings.push(search_string);
}
});
new_search_strings.push(new_search_string);
search_strings = new_search_strings;
}
return search_strings;
}
これを行う「より良い」方法はありますか?