私が持っています:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
私は次のようなことができるようになりたいです:
array.remove("B");
ただし、削除機能はありません。どうすればこれを達成できますか?
私が持っています:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
私は次のようなことができるようになりたいです:
array.remove("B");
ただし、削除機能はありません。どうすればこれを達成できますか?
回答:
私は実際にこのスレッドをより最近の1行のソリューションで更新しています:
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
基本的には、削除する要素とは異なるすべての要素を選択することにより、配列をフィルターに掛けます。
注:はすべての出現を削除します。
編集:
最初の発生のみを削除する場合:
t = ['A', 'B', 'C', 'B'];
t.splice(t.indexOf('B'), 1); // will return ['B'] and t is now equal to ['A', 'C', 'B']
リストを逆の順序でループし、.splice
メソッドを使用します。
var array = ['A', 'B', 'C']; // Test
var search_term = 'B';
for (var i=array.length-1; i>=0; i--) {
if (array[i] === search_term) {
array.splice(i, 1);
// break; //<-- Uncomment if only the first term has to be removed
}
}
検索語句のすべての出現を削除する必要がある場合は、逆の順序が重要です。そうしないと、カウンターが増加し、要素をスキップします。
最初のオカレンスのみを削除する必要がある場合、以下も機能します。
var index = array.indexOf(search_term); // <-- Not supported in <IE9
if (index !== -1) {
array.splice(index, 1);
}
0
は、Cの場合のように自動的に速くなるわけではありません。もちろん、制限をキャッシュしている限り、最初の一致を続けた場合(ただし、停止した場合はそうではありません)、複雑になります。
あなたが探しているものの場所を見つけて、.indexOf()
それを削除する必要があります.splice()
function remove(arr, what) {
var found = arr.indexOf(what);
while (found !== -1) {
arr.splice(found, 1);
found = arr.indexOf(what);
}
}
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
remove(array, 'B');
alert(array);
これはすべての発生を処理します。
.indexOf()
場合、これをJavaScriptファイルに追加できます。
Uncaught ReferenceError: array is not defined
。なにが問題ですか?
.indexOf()
、もう少しだけ簡単に利用できます。あなたは合格した場合found
に2番目の引数として.indexOf()
呼び出しwhileループ内で、すでにチェックされ、等しくない終わった配列の要素が再度チェックされていません: found = arr.indexOf(what, found);
単に
array.splice(array.indexOf(item), 1);
-1
何も見つからないと返されますが、エラーが発生します。spliceは配列の最後から1つの要素を削除します
シンプルなソリューション(ES6)
重複する要素がない場合
Array.prototype.remove = function(elem) {
var indexElement = this.findIndex(el => el === elem);
if (indexElement != -1)
this.splice(indexElement, 1);
return this;
};
あなた自身の削除を書く必要があります。配列をループして、削除する項目のインデックスを取得し、それを使用splice
して削除できます。
または、新しい配列を作成し、現在の配列をループして、現在のオブジェクトが削除するものと一致しない場合は、新しい配列に配置できます。
使用する:
array.splice(2, 1);
これにより、インデックス2(3番目のアイテム)から始まる配列から1つのアイテムが削除されます
array.splice(2,1)
、配列からインデックス2の1つのアイテムを削除します。詳細については、https:
array.spliceを使用
/*array.splice(index , howMany[, element1[, ...[, elementN]]])
array.splice(index) // SpiderMonkey/Firefox extension*/
array.splice(1,1)
ソース:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
array
とはsplice
、ドットなければなりません。
.indexOf()
と.splice()
トリックを行う必要があります。または多分、あるいは、.filter()
。