【发布时间】:2016-09-06 20:24:44
【问题描述】:
这似乎是一个非常新手的问题,但我现在正在努力解决这个问题并寻求帮助。
这是 JavaScript 中的示例数组
var SelectedFilters = ["[size:12:12]","[size:12:12]","[size:13:13]","[size:14:14]", "[color:14:14]","[color:14:14]","[type:14:14]","[type:14:14]"];
现在我希望根据搜索词从这个数组中删除某些项目,现在搜索词只包含字符串的一部分,例如
var searchTerm1 = 'size'
var searchTerm2 = 'color'
我已经尝试了以下代码,但它不起作用:
var i = SelectedFilters.indexOf(searchTerm1);
if (i != -1)
{
SelectedFilters.splice(i, 1);
}
我也尝试过 for 循环,迭代所有项目,但再次搜索失败,因为它无法匹配“大小”或“颜色”
我在看什么:如果使用 searchterm1,结果输出将是:
["[color:14:14]","[color:14:14]","[type:14:14]","[type:14:14]"];
如果使用 searchterm2,结果输出应该是:
["[size:12:12]","[size:12:12]","[size:13:13]","[size:14:14]","[type:14:14]","[type:14:14]"];
如果有人能解决这个难题,那就太好了,同时我也在努力寻找解决方案。
【问题讨论】:
-
你真的需要对原来的Array进行变异,还是新的Array可以?
-
要求不允许我创建一个新数组,因为其他答案建议使用 filter 函数,因为这将创建一个新数组
-
仅供参考,您的尝试没有成功,因为数组上的
.indexOf()会寻找完全匹配的。因此,您需要遍历数组并分别对每个字符串执行测试。 -
好的,我发布了一个变异原始的解决方案。
标签: javascript jquery arrays search