2016-05-20 4 views
-1

で特定の単語を含むすべてのセルを削除し、私はこの配列を持っていることを前提としています配列jQueryのまたはJavaScript

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

私は出力配列は次のようになるように、単語「バナナ」を含むすべてのセルを削除する必要があります。

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

Jqueryを使用するとどうすればできますか?

私はこれを試してみましたが、それは本当の作品ではありません。

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

私はthis question and answerを見ましたが、前述のトピックでは、答えは単なる具体例のための単語「バナナ-101」が、私の質問を含むセルを削除しますたとえば "バナナ"を持つすべてのセルを削除するにはどうすればいいですか?

+2

[の可能性のある重複jQueryを使用して配列から特定の値を削除する方法(http://stackoverflow.com/questions/3596089/how-to-remove-specifc-value-from-array-using-jquery ) – Li357

+0

@AlexMcMillan var found = $ .inArray(fruit_id、myarray)> -1; myarray.splice(found、1); – Ali

+0

あなたのコードでは、 'found'は' true'か 'false'です。 'splice'の' index'引数のための有効な引数もありません。 –

答えて

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

+2

なぜdownvoteですか? – Jai

+2

私はちょうどテストし、それは動作します...いくつかの人々はスポーツのようにdownvoteを信じています。 –

+1

@ T.J.Crowder、今は正規表現です。 –

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"] 
2

foundtrueまたはfalseのいずれかになります。 index引数の有効な引数はどちらも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);

を。大文字小文字を区別しない場合は、fruit_idとチェックしている各エントリの両方でtoLowerCaseを使用してください。

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

いくつかのtrikcy jを持つES6では、約1行のコードです。

~-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の準拠ののwebbrowsersでのみ動作します。)

関連する問題