0

私は JavaScript をよりよく学ぼうとしています。Node.js モジュールのソースを確認しているときに、Path.js モジュールでこのネストされた関数に出会いました。

基本的に、配列パスのある種の「クリーンアップ」を行うために使用されていると判断しましたが、実際に何をしているのかを「把握」することはできません...誰かこれを説明できますか?

モジュールへのリンクは次のとおりです: https://github.com/joyent/node/blob/master/lib/path.js

function trim(arr) {
      var start = 0;
      for (; start < arr.length; start++) {
        if (arr[start] !== '') break;
      }

      var end = arr.length - 1;
      for (; end >= 0; end--) {
        if (arr[end] !== '') break;
      }

      if (start > end) return [];
      return arr.slice(start, end - start + 1);
    }

これは、posix バージョンの「export.relative」関数内に組み込まれています。

誰かが私にこれを理解するのを手伝ってくれるなら、それは私の心を少し楽にするかもしれません...

4

1 に答える 1

0

この関数が行うことは、指定された配列の最初と最後から空の文字列値を削除することです。を呼び出すとtrim(['', '', 1, 2, ''])、 が得られ[1, 2]ます。

最初に (0 のインデックスから) 最初から空の文字列値をチェックすることから始めます。次に、同じチェックを行いますが、最後 (arr.length-1配列内の最後のインデックスであるインデックスから) から開始し、逆方向に進みます。

空文字列以外の値が検出されると、チェックは停止します。

その場合start > end、空文字列以外の値がないため、空の配列を安全に返すことができます。

保持する必要がある配列要素がいくつかある場合 (私の例の 1 と 2 など)、配列はそのsliceメソッドによってトリミングされます。メソッドは、たとえばメソッドにslice対応しString::substrます。

ご理解いただければ幸いです。

于 2012-09-17T12:10:04.587 に答える