2017-07-17 8 views
1

文字列があり、そこから同じ単語を削除する必要があります。同じ要素を文字列から削除する

ここに私のコードです。文字列を配列に分割してソートしようとしましたが、うまくいきませんでした。それは私のifを通過しませんでした。私はあなたのアドバイスと、おそらく動作するコードを聞きたい:)

var str = "I wont go anywhere as soon as I wont go there"; 
    var array = str.split(" "); 
    document.getElementsByTagName('p')[0].innerHTML = str; 
    document.getElementsByTagName('p')[1].innerHTML = array; 
    document.getElementsByTagName('button')[0].onclick = function() { 
      for (var i = 0; i < array.length; i++) { 
       if (array[i] == array[i + 1]) { 
        array.splice(i, 1); 
       } 
      } 
      document.getElementsByTagName('p')[2].innerHTML = array; 
     } 
+2

をしようとした場合(https://stackoverflow.com/questions/10398931/javascript-how-to-remove-text-from-a-string) –

答えて

0

あなたの問題を探している部分文字列を置き換えることができますが、あなたが他のすべての配列要素を持つすべての配列要素をチェックしていないということです。

あなたのコード:

for (var i = 0; i < array.length; i++) { 
      if (array[i] == array[i + 1]) { 
       array.splice(i, 1); 
      } 
     } 

ちょうど順序で配列要素をチェックします。

試してみてください。

for (var i = 0; i < array.length; i++) { 
    for(var j = 0; j < array.length; j++){ 
      if (array[i] == array[j] && i != j) { 
       array.splice(i, 1); 
      } 
    } 
} 
+0

それは働いてくれてありがとう!あなたが書いたように私は二重ループiとjを試みたが、残念ながら&& i!= jをifに追加するのを忘れていた。 – ttmcswg

+0

@ttmcswgあなたを助けることがうれしい。それが働いた場合は、私の答えを正しいものとして受け入れてください:) –

0

あなたは一文に含まを分割した後、拡散構文でES6 Setを使用することができます。ES5あなたに

const str = "I wont go anywhere as soon as I wont go there"; 
 
const unique = [...new Set(str.split(' '))].join(' '); 
 

 
console.log(unique);

を辞書オブジェクトにArray#reduceを使用できます。

var str = "I wont go anywhere as soon as I wont go there"; 
 

 
var dict = Object.create(null); // creates an empty object, without inherited properties and methods 
 
var unique = str.split(' ').reduce(function(arr, w) { 
 
    if(!dict[w]) { 
 
    arr.push(w); 
 
    dict[w] = true; 
 
    } 
 
    
 
    return arr; 
 
}, []).join(' '); 
 

 
console.log(unique);

0

あなたはちょうどあなたが

var ret = "data-123".replace('data-',''); 
console.log(ret); 
1

1ラインのようなあなたは、[文字列からテキストを削除する方法のJavascript]の可能性のある重複したこの

var reducedString = array.reduce(function(out, s) { 
    return out.indexOf(s) == -1 ? out + ' ' + s : out; 
},'').substring(1); 

またはES6

var reducedString = array.reduce((out, s) => out.indexOf(s) == -1 ? out + ' ' + s : out); 
+0

これは動作するのかどうかわかりませんが、ES6は+1です! –

+0

@MarkCarpenterJrありがとう:)、私は最近array.reduce()を発見し、多くのスペースを節約しました –

関連する問題