给定一个用字符串填充的数组。我需要以下行为:
foo = []
foo = add_search_string(foo, 'a')
foo 应该等于 ['a']
foo = add_search_string(foo, 'a')
foo 应该等于 ['a'] 因为 'a' 已经是一个搜索字符串
foo = add_search_string(foo, 'ab')
foo 应该等于 ['ab'] 因为 'a' 是 '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;
}
有一个更好的方法吗?