替换数组中的一个字符串

时间:2015-02-03 07:30:35

标签: javascript arrays

我有以下数组:

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;

我该怎么做?

3 个答案:

答案 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>

this jsFiddle

中的文字字段示例

答案 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>

我希望有所帮助!