どうも!リョクちゃです。
今回は、配列から値を取り出す方法は以前に触れましたが、
より効率的に取り出せるおしゃれな方法を、
加えて配列内に同じ値があった場合、集計する時に邪魔になりますよね?
そんなときに備えて除去できる方法を紹介していきます。
ちなみに前回はこちら
目次
配列から要素を抜き出す効率的な方法
配列へのアクセス方法は以下の記述で出来ると紹介しました。
ただこれだと、1つしか抜き出すことができません。
そこで複数を抜き出したい場合はどうしたらいいのか?
この方法として、スライス記法と呼ばれる記述の仕方があります。
スライス記法は以下のような記述で表現することができます。
Pythonのそれとはちょっと違いますが、スライス記法に分類されます。
例) 配列変数sampleの0番目と1番目のインデックスに格納されている値を抜き出します。
1 2 3 4 |
$sample = @("Apple", "Bacon", "Orange", "Apple") $sample[0..1] # Apple # Bacon |
全ての要素を抜き出したいときは、末尾は配列に入っている要素の数を指定してあげれば
取得することができますが、動的に値が追加された配列では、
その時々で配列が変わるので場合によっては処理がうまくいかない恐れがあります。
そんな時は、配列の要素数を取得するLengthメソッドを終了インデックスに指定することで
全ての要素をエラーを発生させることを最小限に抑えながら取得ができます。
こんな風に
1 |
$sample[0..$sample.Length]す |
全ての要素を抜き出すことができます。
スライス記法は文字列にも使える
実はスライス記法、文字列にも使うことができます。
例えば、文字列を途中まで取得したいときに便利です。
1 2 3 |
$strTest = "こんにちは、皆さん" # 「こんにちは」を抜き出したい場合 $strTest[0..4] |
このような使い方ができます。
※1文字1文字が配列に格納された状態で返されてしまうので、注意が必要です。
配列内で重複された値を削除する
例えば、以下のような配列があったとします。
1 |
$test = @("Apple", "Bacon", "Orange", "Bacon", "Apple", "Apple", "Grape") |
同じ値が含まれているのがわかりますね。
ある作業によっては、重複した値が邪魔なときもありますよね。
そんな時、以下のようなコマンドレットを組み合わせることで
簡単に除去することができます。
これはPowerShellならではの記述になるので、さすがといったところです。
例) 配列変数testから重複した要素を抜き出し、出力します。
1 2 3 4 5 |
$test| Sort-Object | Get-Unique # Apple # Bacon # Grape # Orange |
Sort-Objectで配列変数testを並び替えて、Get-Uniqueでユニークな値を抜き出します。
組み合わせると強力な効果を発揮するコマンドレット、PowerShellなかなかイカしてます!
まとめ
配列から値を取り出す効率的な方法として、スライス記法を紹介しました。
慣れるまでは手こずりますが、慣れるとかなり使える便利な方法です。
配列内の重複要素を削除するときには、Get-UniqueとSort-Objectと呼ばれる、
コマンドレットを活用しました。
これらコマンドを組み合わせることで、重複要素の削除ができます。
最後までお読みいただき、ありがとうございます。