配列の要素を検索する

HTML

<ul>
 <li><a href="https://teratail.com/questions/59356">JavaScript - 配列の中の検索方法を教えてください(59356)|teratail</a></li>
</ul>

JavaScript

'use strict';
/**
 * for 文
 */
function searchArray1 (array) {
  var results = [];

  for (var i = 0, l = array.length, value; i < l; ++i) {
    value = array[i];

    if (value.charAt(0) === 'A' && value.lastIndexOf('001', value.length - 1) !== -1) {
      results.push(value);
    }
  }

  return results;
}

function searchArray2 (array) {
  var results = [];

  for (var i = 0, l = array.length, value; i < l; ++i) {
    value = array[i];

    if (value.charAt(0) === 'A' && value.slice(-3) === '001') {
      results.push(value);
    }
  }

  return results;
}

function searchArray3 (array) {
  var results = [];

  for (var i = 0, l = array.length, value; i < l; ++i) {
    value = array[i];

    if (/^A.*001$/.test(value)) {
      results.push(value);
    }
  }

  return results;
}


/**
 * Array.prototype.filter
 */
function searchArray4 (array) {
  return array.filter(RegExp.prototype.test.bind(/^A.*001$/));
}

var searchArray5 = (function (test) {
  return function searchArray5 (array) {
    return array.filter(test);
  };
}(RegExp.prototype.test.bind(/^A.*001$/)));

/**
 * benchmark
 */
function benchmark (searchArray, array) {
  var i = 1000000, name = searchArray.name;

  console.time(name);
  while (i--) {
    searchArray(array);
  }

  console.timeEnd(name);
  console.log(searchArray(array));
}

/**
 * test code
 */
var array = ['A01002001', 'りんご', 'ばなな', 'B01001001', 'A02002001', 'トマト', 'Aいちご', 'AAA', 'ABC', 'AB001', 'AB011'];

benchmark(searchArray1, array);
benchmark(searchArray2, array);
benchmark(searchArray3, array);
benchmark(searchArray4, array);
benchmark(searchArray5, array);