JavaScriptの_.without()メソッドとは?配列から指定した値を除外する方法
JavaScriptで配列を操作する際、特定の値だけを取り除いた新しい配列を作りたいケースはよくあります。そんなときに便利なのが、Underscore.jsなどのユーティリティライブラリが提供する_.without()メソッドです。
_.without()メソッドの概要
_.without()は、第1引数に渡された配列から、第2引数以降で指定した要素をすべて除外し、その結果を新しい配列として返します。このメソッドには以下のような特徴があります。
- 2つのパラメータを受け取る:第1パラメータが対象の配列、第2パラメータが取り除きたい値です。
- trueやfalseを問わず処理する:値の真偽を判断せず、各要素を1つずつ順番にチェックして処理を進めます。
- 大文字・小文字を区別する:文字列を比較する際、大文字と小文字は別の値として扱われるため注意が必要です。
構文
_.without(array, values);
使用例1:数値の配列から値を削除する
次の例では、第1パラメータの配列の中に第2パラメータで指定した値(0、9、1)が存在するかどうかを確認し、存在する値をすべて削除しています。
<html> <body> <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script> </head> <body> <script> document.write(_.without([5, 6, 4, 8, 9, 9, 0, 1], 0, 9, 1)); </script> </body> </html>
出力結果
5,6,4,8
出力を見ると、元の配列から「0」「9」「1」が取り除かれ、残りの要素だけが返されていることがわかります。なお、重複していた「9」もまとめて削除されます。
使用例2:大文字・小文字の違いによる挙動
_.without()は大文字と小文字を厳密に区別します。次の例では、「java」という単語が第1パラメータにも第2パラメータにも含まれていますが、削除されません。これは、第2パラメータの"JAVA"が大文字である一方、第1パラメータ内の"java"が小文字だからです。
<html> <body> <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script> </head> <body> <script> document.write(_.without([5, 6, "c++", "php", "java", "javascript", 0, 1], 0, "JAVA", 1)); </script> </body> </html>
出力結果
5,6,c++,php,java,javascript
"JAVA"(大文字)と"java"(小文字)は別の値として判定されるため、「java」は配列にそのまま残ります。このように、文字列を扱う場合は大文字・小文字の表記を揃えておくことが重要です。
まとめ
_.without()メソッドを使えば、配列から不要な値を簡単に除外できます。ただし、比較は厳密(大文字・小文字を区別)に行われる点には注意しましょう。フィルタリング処理をシンプルに書きたい場合に非常に有用なメソッドです。
-
JavaScriptの_.size()メソッドとは?配列のサイズを取得する方法を解説
_.size()メソッドとは_.size()は、JavaScriptの定番ユーティリティライブラリであるunderscore.jsに用意されている関数です。主に配列の要素数(サイズ)を取得するために使われます。このメソッドを使用する前に、underscore.jsのCDNをページに読み込んでおく必要がある点に注意してください。構文_.size(array);例1:通常の配列の場合次の例では、数値を格納した通常の配列を_.size()メソッドに渡し、配列のサイズを取得しています。<html> <body> <head> <script src =
-
JavaScriptのpadStart()メソッドとは?文字列の先頭にパディングを追加する方法を解説
padStart()メソッドとはJavaScriptでは、concat()メソッドを使うことで2つの文字列を連結できます。しかし、元の文字列の先頭に特定の文字列を追加したい場合、最も簡単な方法がstring.padStart()メソッドです。このメソッドは、単に文字列を先頭に追加するだけでなく、追加後の合計文字数も管理してくれます。引数は2つあり、1つ目は目標となる長さ(length)、2つ目は追加する文字列です。指定された長さに達するまで、2つ目の文字列が元の文字列の先頭に繰り返し追加されます。構文string.padStart(length, string);length:結果として得られ