私はプレミアリーグ選手の名前を含む配列にする必要があります。 プレーヤーオブジェクトにユニークなIDがないので、名前で一致させたいと思います。javascriptで類似した文字列を一致させる方法
たとえば、Zlatan Ibrahimovic
とZlatan Ibrahimović
と一致する文字列比較を行うにはどうすればよいですか? (両方の文字列の最後の文字に注意してください)
私はプレミアリーグ選手の名前を含む配列にする必要があります。 プレーヤーオブジェクトにユニークなIDがないので、名前で一致させたいと思います。javascriptで類似した文字列を一致させる方法
たとえば、Zlatan Ibrahimovic
とZlatan Ibrahimović
と一致する文字列比較を行うにはどうすればよいですか? (両方の文字列の最後の文字に注意してください)
これは小さな問題ではありません。 あなたはレーベンシュタイン距離問題になっているはずです
https://en.wikipedia.org/wiki/Levenshtein_distance
あなたは異なる実装をGoogleで検索するなどのライブラリを使用することができます https://www.npmjs.com/package/levenshtein
例:私が使用
l = new Levenshtein('Zlatan Ibrahimovic', 'Zlatan Ibrahimović')
// l === 1
をすでに、私は好きだった。私のコードでは、これを実験的に提案しました。
私は結果を気にしません。長い弦4では非常に良い数字があり、小さな数字2では非常に悪いので、
私はl/Math.max(str1.length、str2.length)のようなことをすることができます。あなたの番号を作り、興味のある番号を決めることができます。
Levenshtein距離は、2つの文字列を等価にするための最小限の編集数を計算するために使用されます。私はそれがOPが達成しようとしているものだとは思わない。 Levenshtein距離と2のしきい値を使うだけで、ZlatanとKlatapが一致します。 –
これは本当に素晴らしいアプローチです。ありがとう! – ManuKaracho
[正規表現](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)はあなたの友人です。 –
だから、私はもう一方の名前の1文字の表現を知っていなければならないだろうか? – ManuKaracho
アクセント記号の付いた "c"は "c"と "同等"であることを知る必要があります。しかし、あなたがそれを話すことなく、コンピュータがそれを知る方法はありません。 –