pig's diary

何でも忘れるので万年初心者ね

Array 驚きの5メソッド

JavascriptのArray.filter()など。知らなかったので。

基本ルール

  • 元の配列に影響はしない。破壊的じゃない。
  • 関数(==コールバック関数)を引数にする。
  • コールバック関数の引数は3つ:
    • element(値),
    • index(0から始まるインデックス),
    • array(元になる配列)
  • every、some はあまり使わなそう。

Array.filter(fn):[戻り値]trueを返した要素のみにフィルタリングした配列

var arr   = [23,523,23,11,54];
function gt24(e, i, a){  
  return e > 24;
};
var arr02 = arr.filter(gt24);
console.log(arr02); // [523, 54];

Array.map(fn):[戻り値]各戻り値をたばねた新しい配列

var arr   = [23,523,23,11,54];
function mapThem(e, i, a){
  e += 10;
  return e;
};
var arr02 = arr.map(mapThem);
console.log(arr02); // [33, 533, 33, 21, 64]

Array.forEach(fn):[戻り値]なし。全要素を使って処理をしたい時。

var arr   = [23,523,23,11,54];
function plus10(e, i, a){
  e += 10;
  console.log(e);
};
var arr02 = arr.forEach(plus10);
console.log(arr);   // [23, 523, 23, 11, 54]
console.log(arr02); // undefined。何も帰ってこない

Array.every(fn):[戻り値]Boolean。falseが返るまで、各要素を使って処理。

var arr   = [23,523,23,11,54];
function gt12(e, i, a){
  if (e>12) {
    console.log(e + '、だぜ!');
    return true;
  } else {
    return false;
  }
};
var arr02 = arr.every(gt12);
/*
23、だぜ!
523、だぜ!
23、だぜ!
*/
console.log(arr);   // [23, 523, 23, 11, 54]
console.log(arr02); // false。もし全部trueなら、true。

Array.some(fn):[戻り値]なし。falseが返るまで、各要素を使って処理。

var arr   = [23,523,23,11,54];
function gt20(e, i, a){
  if (e<20) {
    console.log(e + '、だぜ!');
    return true;
  } else {
    return false;
  }
};
var arr02 = arr.some(gt20);
/*
11、だぜ!
*/
console.log(arr);   // [23, 523, 23, 11, 54]
console.log(arr02); // true。もし全部trueなら、false。