1

私は Coderbyte でいくつかの簡単な JavaScript の課題に取り組んできました。そのうちの 1 つは、文字列を取得し、各単語の最初の文字を大文字にすることです。私はこれをいくつかの方法で解決しました。最初に単語を配列に変換し、次に文字列自体を「操作」します。これらのオプションのいずれかが優先されるかどうか疑問に思っていますか? つまり、文字列は不変であるため、通常、文字列を操作するのは良い考えではないというフィードバックをいくつか受け取りました。これは、文字列を実際に操作するのではなく、ある文字列を別の文字列に置き換えることを意味します。なぜこれが悪いことなのか、正確にはわかりません。たぶん、メモリの問題か速度の問題でしょうか?とにかく、私の解決策は以下です。フィードバックをいただければ幸いです。

function LetterCapitalize(str) { 

  str = str.split(" ");
  for (i=0; i<str.length; i++){
    str1 = str[i].split("");
    str1[0] = str1[0].toUpperCase();
    str[i] = str1.join("");
  }
  str = str.join(" ");
  return str;        
}

function LetterCapitalize(str) { 
  str = str.split(" ");
  for (var i=0; i<str.length; i++){
  console.log(str[i].length);
    str[i]=str[i].charAt(0).toUpperCase()+str[i].slice(1,str[i].length);
  }
  str = str.join(" ");
  return str; 
}
4

2 に答える 2

1

ベスト プラクティスは、読み取り可能であること、サポート対象のブラウザー/プラットフォームで動作すること、実行速度が速いことを確認することです。速度は簡単なので、この jsPerf にコードを追加し、最初の文字を大文字にする別の jsPerf も見つけました。

コード例: http://jsperf.com/capitalize-first-letter-2

同じことについての他のjsPerf: http://jsperf.com/capitalize-first-letter

于 2013-10-29T19:49:42.263 に答える
0

私の経験では、パフォーマンスの違いは心配する価値はありません..一度に何百万もの単語を大文字にする場合を除きますが、問題を解決するために JavaScript を使用するべきではありません。

文字列は不変ですが、単純な文字列連結は、1 つの要素を変更するためだけに配列に変換してから文字列に戻すよりもコストがかかりません。

JavaScript を使用する場合、微視的なパフォーマンスの向上よりも可読性を好みます。

function capitalizeFirstLetter(str) {
    return str[0].toUpperCase() + str.slice(1);
}

ここでjsperf を変更しましたが、これも他の 2 つよりもかなり高速であることがわかりました。

于 2013-10-29T19:54:07.507 に答える