从数组javascript中删除值

Nir*_*nae 1 javascript arrays loops

我有一个数组JavaScript和一个字符串:

var pool1 = ['ca','cahier','cartable','carte','cartographe','canape'];
var key1 = 'car';
Run Code Online (Sandbox Code Playgroud)

我想要做的是,从数组中删除所有不包含的值key1.

为此,我写了这个函数:

function searchInPool(key, pool){
    for (i = 0; i < pool.length; i++) {
        var index = pool[i].indexOf(key);
        if (index > -1) {
            pool.splice(index, 1);
        }
    }
    return pool;
}
Run Code Online (Sandbox Code Playgroud)

它似乎有效,但最终结果给了我:

["cartable", "carte", "cartographe", "canape"]
Run Code Online (Sandbox Code Playgroud)

它已成功删除ca,cahiercanape不应该在这里,因为它不包含car任何人可以解释我从我的函数中写的东西误解了什么?

预期的最终结果是:

["cartable", "carte", "cartographe"]

非常感谢

Tus*_*har 5

你可以用Array#filter.

array.filter(e => !e.includes(key));
Run Code Online (Sandbox Code Playgroud)

var pool1 = ['ca', 'cahier', 'cartable', 'carte', 'cartographe', 'canape'];
var key1 = 'car';

var result = pool1.filter(e => !e.includes(key1));
console.log(result);
Run Code Online (Sandbox Code Playgroud)

ES5:

var result = pool1.filter(function(el) {
    return el.indexOf(key1) === -1;
});
Run Code Online (Sandbox Code Playgroud)

  • @AL [浏览器兼容性](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter#Browser_compatibility).要支持旧版浏览器,应使用**ES5**方法. (2认同)