は、アレイJavascriptの配列内にある複数の要素の出現をすべて削除するにはどうすればよいですか?例えば
[1, 2, 3, 2, 4]
から値2を除去して、私は、フィルタを使用する場合、それが唯一の私が欲しいものではないれ、2回目以降の発生を除去
[1, 3, 4]
結果を生成しなければなりません。
複数回発生するすべての値は、完全に削除する必要があります。
は、アレイJavascriptの配列内にある複数の要素の出現をすべて削除するにはどうすればよいですか?例えば
[1, 2, 3, 2, 4]
から値2を除去して、私は、フィルタを使用する場合、それが唯一の私が欲しいものではないれ、2回目以降の発生を除去
[1, 3, 4]
結果を生成しなければなりません。
複数回発生するすべての値は、完全に削除する必要があります。
以前に並べ替え、あなたの配列は、あなただけの、そのneighbourgと同じである要素を削除する必要がある場合:
var input = [1, 2, 3, 2, 4, 5, 6, 5 , 5, 1];
var result = input.sort().filter((x,i,arr) => x !== arr[i+1] && x !== arr[i-1]));
console.log(result); // [3, 4, 6 ]
しかし、彼はすべての** ** 2つの(そして5つの)を削除したいと考えています。 –
@torazaburoあなたのハワイに感謝します。私はちょうどバグを修正するために編集しました –
あなたはfilter()
でこれを行うと同じindexOf()
とlastIndexOf()
var data = [1, 2, 3, 2, 4, 1, 1];
var result = data.filter(function(e) {
return data.indexOf(e) == data.lastIndexOf(e);
});
console.log(result)
提案ウィットhoutソート。
var data = [1, 2, 3, 2, 4],
filtered = data.filter(function (a) {
return this[a] === 1;
}, data.reduce(function (r, a) {
r[a] = (r[a] || 0) + 1;
return r;
}, {}));
console.log(filtered);
最も簡単な解決策は、単に複数回発生するいかなる見つかった項目のマップを維持するために、そして常にフィルタのもの
var arr = [1, 2, 3, 2, 4];
var map = [];
var filtered = arr.filter(function(item, index) {
if (arr.lastIndexOf(item) !== index) map.push(item);
return map.indexOf(item) === -1;
});
console.log(filtered)
あなたは、複数のオカレンスを削除したいと思いますが、複数のオカイを削除するとしますレニングスは「私が欲しいものではない」... ...? – Utkanos
配列内の複数の変数のインスタンスをすべて削除したい場合は – anonymous