2017-12-13 22 views
-2

JavaScriptでこの機能に問題があり、必要な結果が得られません。私は、文字列が同じ長さであり、これは私がこれまで持っているものであれば見つけるしようとしています:JavaScript機能が正しくないのはなぜですか?

function areSameLength(str1, str2) { 
    if (str1 === str2) { 
     return true; 
    } 
    else 
     return false; 
} 

、これは正しくない理由を私はわかりません。

+2

文字列自体ではなく、_lengths_を比較する必要があります。また、真偽を明示的に返す必要はありません。 str1.lengthとstr2.lengthを比較した結果を返します。 – raina77ow

+3

"なぜこれが正しくないのかわかりません._"長さをチェックすることは何もなかったので、文字列が同じ場合(文字の並びが同じである場合)のみ比較しました。 'str1.length == str2.length'のようなものが必要です。 – csmckelvey

答えて

0

あなたは"string".lengthを使用する必要があるので、それは次のようになります。単に

function areSameLength(str1, str2) { 
    return str1.length === str2.length; 
} 

function areSameLength(str1, str2) { 
    if (str1.length === str2.length) { 
     return true; 
    } 
    else 
     return false; 
} 

以上が、あなたが開始することができますthよりも複雑になるで。あなたはSTR1またはSTR2がチェックする前に、文字列であることを確認したい場合は、次の

function areSameLength(str1, str2) { 
    if ((typeof str1 == 'string' || str1 instanceof String) && (typeof str2 == 'string' || str2 instanceof String)) { 
     return str1.length === str2.length; 
    } 
    else 
     return false; 
} 

これが何をするか、それは文字列だことを確認するために変数の型とインスタンスをチェックしています。しかし、それはちょっと醜いです。だからあなたはおそらくそれを機能させたいと思うでしょう。

function isString(str) 
{ 
    return typeof str == 'string' || str instanceof String; 
} 

function areSameLength(str1, str2) 
{ 
    if (isString(str1) && isString(str2)) 
    { 
     return str1.length === str2.length; 
    } 
    // return false if anything else 
    return false; 
} 
0

文字列のlengthプロパティを確認する必要があります。

StringオブジェクトのlengthプロパティがUTF-16コード単位で、文字列の長さを示しています。

function areSameLength(str1, str2) { 
 
    return str1.length === str2.length; 
 
} 
 

 
console.log(areSameLength('', '')); 
 
console.log(areSameLength('', 'a')); 
 
console.log(areSameLength('foo', 'bar')); 
 
console.log(areSameLength('baz', ''));

1

あなただけの同じ文字列が一致する意味、それらが等しいかどうかを確認するために2つの文字列を比較しています。

使用the length property彼らは同じ長さであるかどうかを確認、必ずしも必要ではないが、同じ文字に:

function areSameLength(str1, str2) { 
 
    return str1.length === str2.length; 
 
} 
 

 

 
// Some tests to show it works: 
 
console.log(areSameLength('', '')); // true 
 
console.log(areSameLength('test', 'test')); // true 
 
console.log(areSameLength('testing', 'abcdefg')); // true 
 
console.log(areSameLength('a', 'bcd')); // false

ので、また、あなたは、ここでもしelse文を必要としません。比較はブール値を返します。単純にその値を返すことができます。

2
function areSameLength(str1, str2) { 
    if (str1.length === str2.length) { // you want to compare the lengths, not the strings themselves 
     return true; 
    } 
    else 
     return false; 
} 

良い、短いバージョン:

function areSameLength(str1, str2) { 
    return str1.length === str2.length; 
} 
+0

これは反パターンです。if(condition){return true} else {return false} 'を実行しないで、条件を直接返すだけです。私はOPがそれを持っていることを知っているが、それは改善のための変更です:) – msanford

+1

ちょうどメモしたい、短いバージョンは〜75文字を要し、あなたはすべて1コールにつき2文字のすべてを保存します。あなたが高次の関数を扱っていないなら、余分なコードや読みやすさの点ではコストがかかりません。 – cHao

+0

ありがとうございます。私は長さを比較する正しいことを覚えていない。本当にありがとうございました。 –

関連する問題