删除包含数组jquery或Javascript中特定单词的所有单元格

时间:2016-05-20 12:11:11

标签: javascript jquery arrays

假设我有这个数组:

var fruits = ["Banana-101", "Orange-105", "Apple-110", "Mango-103", "Banana-102", "Banana-104"];

我需要删除所有包含单词" Banana"所以输出数组是这样的:

var fruits = ["Orange-105", "Apple-110", "Mango-103"];

如何使用Jquery做到这一点?

我尝试了这个,但它不适用:

var found = $.inArray(fruit_id, myarray) > -1; 
myarray.splice(found, 1);

我看到this question and answer,但在提到的主题中,答案只是删除了一个包含特定单词的单元格,例如" Banana-101"但我的问题是如何删除所有具有例如"香蕉"!

的细胞

5 个答案:

答案 0 :(得分:2)

包含Array#filterString#match的解决方案。

var fruits = ["Banana-101", "Orange-105", "Apple-110", "Mango-103", "Banana-102", "Banana-104"],
    banana = /banana/i; // regex for banana case insensitive

fruits = fruits.filter(function (a) {
    return !a.match(banana);
});

console.log(fruits);

答案 1 :(得分:2)

在您的代码中,found将是truefalse。对于index的{​​{1}}参数,它们都不是有效参数。

如果修改现有数组很重要,请向后循环并删除匹配的条目:

splice

你向后循环,这样如果你删除一个条目,你不必担心是否更新索引。

如果要创建新的替换数组,请使用var fruits = ["Banana-101", "Orange-105", "Apple-110", "Mango-103", "Banana-102", "Banana-104"]; var fruit_id = "Banana"; console.log("Before: " + fruits); var index; for (index = fruits.length - 1; index >= 0; --index) { if (fruits[index].indexOf(fruit_id) != -1) { fruits.splice(index, 1); } } console.log("After: " + fruits);

filter

在这两种情况下,我都假设了区分大小写的匹配。对于不区分大小写的问题,请在var fruits = ["Banana-101", "Orange-105", "Apple-110", "Mango-103", "Banana-102", "Banana-104"]; var fruit_id = "Banana"; console.log("Before: " + fruits); fruits = fruits.filter(function(entry) { return entry.indexOf(fruit_id) == -1; }); console.log("After: " + fruits);和您正在检查的每个条目上使用toLowerCase

答案 2 :(得分:1)

在ES6中有一些trikcy js,它大概是一行代码。

~是一个按位运算符,可以转换-1 falsy和>= 0 truthy

var fruits = ["Banana-101", "Orange-105", "Apple-110", "Mango-103", "Banana-102", "Banana-104"];

var final = fruits.filter(x => ! ~x.indexOf('Banana'));

document.write(final);

显然,此代码段仅适用于ES6 complient webbrowsers;)

答案 3 :(得分:0)

您可以使用filter方法过滤掉您不想要的元素。

var fruits = [
    "Banana-101",
    "Orange-105",
    "Apple-110",
    "Mango-103", 
    "Banana-102",
    "Banana-104"
];

fruits = $(fruits).filter(function () {
    return this.indexOf("Banana") === -1;
});

console.log(fruits); // ["Orange-105", "Apple-110", "Mango-103"]

答案 4 :(得分:0)

请记住,您的问题与jQuery无关,而是简单的javascript。你可以看看javascript过滤方法。不要在某些框架中寻找魔法来做这种任务,花一些时间学习javascript。最好的问候,快乐的学习。

var fruits = ["Banana-101", "Orange-105", "Apple-110", "Mango-103", "Banana-102", "Banana-104"];

var word = "Banana";
fruits = fruits.filter(function(value){
    return value.indexOf(word) == -1;
})
console.log(fruits);