我正在制作(试图制作)一个可以返回包含单词字符的数组的函数。它需要将一些双字母作为一个保存在数组中。我有一个包含双字母的数组。我有一个单词列表(有时很大)。现在的问题是它保存了第一个字母 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"]