[英]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#filter
和String#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
將為true
或false
。 splice
的index
參數的有效參數均無效。
如果修改現有數組很重要,請向后循環遍歷並刪除匹配的條目:
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.