JavaScript_javascript スキルの分割および結合関数の高度な使用スキル
JavaScript には、開発者に愛される 2 つの非常に強力な関数があります。それは、分割と結合という 2 つの相反する関数です。これら 2 つの関数を使用すると、文字列型と配列型を交換できます。つまり、配列を文字列にシリアル化したり、その逆を行うことができます。この2つの機能を使いこなすことができます。内部の興味深いアプリケーションをいくつか見てみましょう。まず、次の 2 つの関数を紹介します。
String.prototype.split(区切り文字, 制限)
区切り文字は文字列を配列に分割し、オプションのパラメータ制限は生成される配列の最大長を定義します。
"85@@86@@53".split('@@'); //['85','86','53']; "banana".split(); //["banana"]; //( thanks peter (-: ) "president,senate,house".split(',',2); //["president", "senate"] Array.prototype.join(separator)
["slugs","snails","puppy dog's tails"].join(' and '); //"slugs and snails and puppy dog's tails" ['Giants', 4, 'Rangers', 1].join(' '); //"Giants 4 Rangers 1" [1962,1989,2002,2010].join();
すべて置き換え
この単純な関数は、ネイティブの置換関数とは異なり、正規表現を使用せずにグローバルな部分文字列置換として使用できます。
String.prototype.replaceAll = function(find, replaceWith) { return this.split(find).join(replaceWith); } "the man and the plan".replaceAll('the','a'); //"a man and a plan"
出来事
この関数は部分文字列の一致の数を取得できます。そして、この種の関数は非常に単純で、正規化を必要としません。
String.prototype.occurences = function(find, matchCase) { var text = this; matchCase || (find = find.toLowerCase(), text = text.toLowerCase()); return text.split(find).length-1; } document.body.innerHTML.occurences("div"); //google home page has 114 document.body.innerHTML.occurences("/div"); //google home page has 57 "England engages its engineers".occurrences("eng",true); //2 repeat
String.prototype.repeat = function(times) { return new Array(times+1).join(this); } "go ".repeat(3) + "Giants!"; //"go go go Giants!"
[undefined,undefined,undefined,undefined].join("go ") + "Giants
制限パラメーターを使用
私は、split 関数のオプションパラメータであるlimitをほとんど使用しません。この制限の使用例を次に示します。
var getDomain = function(url) { return url.split('/',3).join('/'); } getDomain("http://www.aneventapart.com/2010/seattle/slides/"); //"http://www.aneventapart.com" getDomain("https://addons.mozilla.org/en-US/firefox/bookmarks/"); //"https://addons.mozilla.org"
数値メンバーを変更します
正規表現を組み合わせたり、結合、分割したりすると、配列のメンバーを簡単に変更できます。しかし、この関数は想像されているほど難しくはありません。その主な機能は、指定された配列の各メンバーの前に指定された文字列を削除することです。
var beheadMembers = function(arr, removeStr) { var regex = RegExp("[,]?" + removeStr); return arr.join().split(regex).slice(1); } //make an array containing only the numeric portion of flight numbers beheadMembers(["ba015","ba129","ba130"],"ba"); //["015","129","130"]
var beheadMembers = function(arr, removeStr) { var regex = RegExp("[,]?" + removeStr); var result = arr.join().split(regex); return result[0] && result || result.slice(1); //IE workaround }
["ba015","ba129","ba130"].map(function(e) { return e.replace('ba','') }); //["015","129","130"]
//test 1 - using join/split var arr = [], x = 1000; while (x--) {arr.push("ba" + x);} var beheadMembers = function(arr, regex) { return arr.join().split(regex).slice(1); } var regex = RegExp("[,]?" + 'ba'); var timer = +new Date, y = 1000; while(y--) {beheadMembers(arr,regex);}; +new Date - timer; //FF 3.6 733ms //Ch 7 464ms //Sa 5 701ms //IE 8 1256ms //test 2 - using native map function var arr = [], x = 1000; while (x--) {arr.push("ba" + x);} var timer = +new Date, y = 1000; while(y--) { arr.map(function(e) { return e.replace('ba','') }); } +new Date - timer; //FF 3.6 2051ms //Cr 7 732ms //Sf 5 1520ms //IE 8 (Not supported)
パターンマッチング
配列ではパターン マッチングを継続的に実行する必要がありますが、文字列ではその必要はありません。正規表現は文字列には使用できますが、配列には使用できません。パターン マッチングのために配列を文字列に変換する機能については、この記事の範囲をはるかに超えています。それの簡単な応用を見てみましょう。
var results = ['sunil', '23:09', 'bob', '22:09', 'carlos', 'mary', '22:59']; var badData = results.join(',').match(/[a-zA-Z]+,[a-zA-Z]+/g); badData; //["carlos,mary"]

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。

PHP 配列のマージおよび重複排除アルゴリズムは、元の配列を小さなブロックに分割して並列処理する並列ソリューションを提供し、メイン プロセスは重複排除するブロックの結果をマージします。アルゴリズムのステップ: 元の配列を均等に割り当てられた小さなブロックに分割します。重複排除のために各ブロックを並行して処理します。ブロックの結果をマージし、再度重複排除します。

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。
