中間文字を入力



解きほぐして恥ずかしい問題はははは
私が書いたものと一番上のものについてコメントします.
まずはスピードが悪い^^;


後で...
私が書いたコードはこうです
function solution(s) {
  return s.length % 2 === 0
    ? s.split("").slice(s.length / 2 - 1, s.length / 2 + 1)
        .join("")
    : s[Math.floor(s.length / 2)];
}
まず中間値を知ってから、それを使って区別します.
文字列で切り捨て、スライス設定領域でインポートします.
どう見ても複雑で、文字数が偶数なら
それを配列に分解して、その値だけを引いて、文字列に変えて、返します.
一番上のコードはこうです
function solution(s) {
  return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}
まずsubstrが私を探しに来たとは知らなかったので.
substr()メソッドは、文字列内の特定の位置から始まり、特定の文字数の文字を返します.正式MDN
に表示されます.
わあ、本当に気が狂った.どうやって思いついたの?まったく.
substr()は2つのパラメータを受け入れることができる.
前は始点のインデックス番号、後は表示する個数です.
substr(3,4)と書いたら、3番から4つのインデックスを見せてくれます!だから3,4,5,6番のインデックスが現れました.
とりあえずコードを説明すると!
前の起点はMathceil(s.length/2) - 1
sが「abcd」の場合、4/2-1、1になります.
また、sが「abcdefghj」である場合、それを9/2に引き上げ、ceilに引き上げ、4.5を5、−1を4に変える.
また、展示する数を判別する方法はこれです.
s.length % 2 === 0 ? 2 : 1
偶数の面の2つの奇数の面の1つを表して、初めて3項の演算子がパラメータとして入ることができることを知っています;
要するに、5ビットの「abcde」文字列が含まれている場合
Math.Ceil(s.length/2)-1=5/2->2.5四捨五入3.0->-1、合計2
5%2=1なのでfalse
始点は2、終点は1で、「c」だけが出力されます.
最初はカンマがあったので、3つの演算子を検索する条件の中にカンマはあるのでしょうか、、、という内容はありませんでした
substr()の公式文書に入ると、先頭と末尾をカンマで区切ることができるそうなので、叩きながら説明できます.
わあ.とても、不思议すぎて、、、、、、、、私もそんな日に解くことができますか、、、?