単語の文字を含む配列を返すことができる関数を作成しています (作成しようとしています)。いくつかの二重文字を配列に 1 つとして保存する必要があります。二重文字を含む配列があります。私は単語のリストを持っています(時には大きい)。ここでの問題は、最初の文字を 2 回保存し、文字と呼ばれる配列内の単語から二重文字を保存することです。関数自体は、json オブジェクトから単語を取得するループで実行されています。関数は私が考えることができる方法で作成されていますが、より良い方法があれば (明らかに) 教えてください。
関数:
var word = 'voorheen';
var doubles = ['aa', 'oo', 'ee', 'ie', 'oe', 'eu', 'uu', 'au', 'ou', 'ui', 'ng', 'ch', 'ij'];
var letters = getLetters(word, doubles);
console.log(letters);
function getLetters(word, doubles) {
var letters = [];
var specials = [];
var indexes = [];
for(var s=0;s<doubles.length;s++) {
if(word.indexOf(doubles[s]) != -1) {
specials.push(doubles[s]);
indexes.push(word.indexOf(doubles[s]));
console.log('specials: ' + specials);
console.log('indexes: ' + indexes);
}
}
for(var i=0;i<word.length;i++) {
if(specials.length>0) {
for(var j=0;j<specials.length;j++) {
if(i<indexes[j]) {
letters.push(word[i]);
console.log('i: ' + i);
console.log('j: ' + j);
console.log('letter: ' + word[i]);
}
if(i==indexes[j]) {
letters.push(specials[j]);
console.log('i: ' + i);
console.log('j: ' + j);
console.log('letter: ' + word[i]);
}
if(i>indexes[j] + specials[j].length) {
letters.push(word[i]);
console.log('i: ' + i);
console.log('j: ' + j);
console.log('letter: ' + word[i]);
}
}
}
else {
letters.push(word[i]);
}
}
return letters;
}
文字のChromeログ出力:
["v", "v", "oo", "o", "o", "r", "h", "h", "e", "ee", "e", "n"]
私が欲しい間:
["v", "oo", "r", "h", "ee", "n"]