私はこの問題に取り組んでいます。なぜなら、私の人生は、.lengthが正しい値にならない理由を理解できません。それは関数が完了するのを待っていないことを意味する0とだけ返します。Javascript - .length returns 0
sortPerms.lengthを返す前に、配列の長さが等しいのを待っているカウンタとifステートメントを使用しようとしました。しかし、それは最初に真実であると評価されます。
配列 "sortPerms"を返すだけでは、配列の正しい値が返されます。
ご協力いただければ幸いです。
var regex = /(.)\1+/g;
var sortPerms = [];
function permAlone (str) {
var perms = [], combos = [], letterOne = str[0];
if (str.length === 1) {
perms.push(str);
return perms;
}
str = str.substring(1,str.length);
combos = permAlone(str);
for (var i = 0; i < combos.length; i++) {
for (var j = 0; j < combos[i].length + 1; j++) {
perms.push(combineCombos(combos[i], letterOne, j));
}
}
sortPerms = perms.filter(function(string){
return !string.match(regex);
});
return sortPerms.length;
}
function combineCombos(combo, lettersIn, i) {
var begin = combo.substring(0,i);
var end = combo.substring(i,combo.length);
return begin + lettersIn + end;
}
あなたはコードが何をしたいですか? – trincot
これはかなり複雑なアルゴリズムであり、変数名はあなたが達成しようとしていることをあまり説明していません。期待される出力が与えられていないときに何が間違っているのかを知ることは難しく、出力をどのように得るべきかについての説明もありません。 – 4castle
これはおそらく '.length'が' 0'を返す理由ではありません。 JavaScriptでは '.length'は文字列の静的なプロパティです。 'string.length'が' 0'を返した場合は、空の文字列を探しています。 – olleicua