簡體   English   中英

刪除數組jquery或Javascript中包含特定單詞的所有單元格

[英]remove all cells that contains specific word in array jquery or Javascript

假設我有這個數組:

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);

我看到了這個問題和答案 ,但是在提到的主題中,答案只是刪除了包含特定單詞的單元格,例如“ Banana-101”,但我的問題是如何刪除所有包含“ Banana”的單元格!

使用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); 

在您的代碼中, found將為truefalse spliceindex參數的有效參數均無效。

如果修改現有數組很重要,請向后循環遍歷並刪除匹配的條目:

 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); 

在這兩種情況下,我都假定區分大小寫。 對於不區分大小寫的代碼,請在fruit_id和要檢查的每個條目上都使用toLowerCase

在帶有一些古怪的js的ES6中,大約只有1行代碼。

~是按位運算符,它會變成-1虛假,而>= 0則為真

 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的網絡瀏覽器;)

您可以使用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"]

請記住,您的問題與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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM