我有以下数组:
etst,tset,tets,ttest,teest,tesst,testt,4est,test,dest
我想从数组中删除输入框的值,这是我正在尝试的内容:
var el = document.getElementById('searchInput').value; // this is "test"
var toSearchFor = eld.slice(0,10); // the array above
for(var i=0; i < toSearchFor.length; i++) {
toSearchFor[i] = toSearchFor[i].replace(/el/g, "");
}
它根本就没有取代&#34;测试&#34;用&#34;&#34;
我该怎么做?
答案 0 :(得分:3)
您可以使用Array.filter
(请参阅MDN)过滤掉所需的值:
var arr = 'etst,tset,tets,ttest,teest,tesst,testt,4est,test,dest'.split(',')
,val = 'test'
document.querySelector('#result')
.innerHTML = arr.filter(function (v) {return v != val});
<div id="result"></div>
中的文字字段示例
答案 1 :(得分:1)
对于存储在变量中的字符串的全局替换,需要显式创建一个RegExp实例,如下所示:
var regex = new RegExp(el, "g");
然后在替换函数中使用它:
toSearchFor[i] = toSearchFor[i].replace(regex, "");
答案 2 :(得分:0)
您的代码存在问题:/el/g
。这是为了匹配字母el
,而不是el
变量中的任何字母。你可以使用RegExp construtor完成它。
// ...
regexp = new RegExp(el); // No need to use 'g' here since you're looking for the whole word
toSearchFor[i] = toSearchFor[i].replace(regexp, "");
// ...
以下是另一种方式:
var eld = ['etst','tset','tets','ttest','teest','tesst','testt','4est','test','dest'];
// var el = document.getElementById('searchInput').value;
var el = 'test';
console.log(eld);
var index = eld.indexOf(el);
if (index >= 0) {
eld[index] = '';
}
console.log(eld);
这是输出:
["etst", "tset", "tets", "ttest", "teest", "tesst", "testt", "4est", "test", "dest"]
["etst", "tset", "tets", "ttest", "teest", "tesst", "testt", "4est", "", "dest"]
在这种情况下,我们使用Array.prototype.indexOf,它返回可以在数组中找到给定元素的第一个索引,以便我们可以直接访问该元素(如果找到)。 / p>
我希望有所帮助!