LoginSignup
0
0

[JavaScript] filterメソッドとは

Last updated at Posted at 2024-05-29

まとめ

mapメソッドとは

filter() は Array インスタンスのメソッドで、指定された配列の中から指定された関数で実装されているテストに合格した要素だけを抽出したシャローコピーを作成します。
mdn web docs

つまり、filterメソッドは、配列の各要素に対して指定した条件を満たすかどうかをチェックし、条件を満たす要素のみを含む新しい配列を返します。

目次

基本構文

配列numbersの値をnumとしてコールバック関数num => num * 2に渡し、新たな配列doubled numbersとして返している。

JavaScript
const numbers = [1, 3, 6, 8, 11];
const lucky = numbers.filter(function(number) {
  return number > 7;
});

console.log(lucky);

//出力結果 [ 8, 11 ]

活用例1

filterメソッド内に、if文を書いてさらに細かく絞り込んでいます。
以下のコードは、値が偶数のものは除外し、その中で2以上の値だけを抽出しています。

JavaScript
const array = [1, 2, 3, 4, 5]
const newArray = array.filter(function(value) {
  if (value % 2 === 0) {
    return false
  }
  return value >= 2
})

console.log(newArray)

//出力結果 [3, 5]

活用例2

これはindexOfを使用し配列に格納されている値のインデックス番号を取得しています。実行結果の左側はindexOfメソッドが取得したインデックス番号であり、user2など同じ値がある場合インデックス番号は同じものとなります。
また実行結果の右側はfilterメソッドが参照しているインデックス番号であり、重複したデータ(user2user5)だけfilterメソッドが参照しているインデックス番号と同じではありません。そのためこのコードでは被っている値を見つけることができます。

JavaScript
const items = ["user1","user2","user2","user3","user4","user5","user5","user5","user5"];
 
const result = items.filter(function(value, index, array) {
 
 console.log(array.indexOf(value) + ' : ' + index);
 
})

//出力結果
//0 : 0
//1 : 1
//1 : 2
//3 : 3
//4 : 4
//5 : 5
//5 : 6
//5 : 7
//5 : 8

解説

  • array.indexOf(value)は、現在のvalueが配列array内で最初に出現するインデックスを返します。
  • indexは、現在のvaluefilterメソッド内で処理されているインデックスを示します。

処理の流れ

  1. value"user1"のとき:

    • array.indexOf("user1")0を返します。
    • 現在のindex0です。
    • 出力: 0 : 0
  2. value"user2"のとき(最初の"user2"):

    • array.indexOf("user2")1を返します。
    • 現在のindex1です。
    • 出力: 1 : 1
  3. value"user2"のとき(2回目の"user2"):

    • array.indexOf("user2")は最初の"user2"のインデックスである1を返します。
    • 現在のindex2です。
    • 出力: 1 : 2
  4. value"user3"のとき:

    • array.indexOf("user3")3を返します。
    • 現在のindex3です。
    • 出力: 3 : 3

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0