配列の要素を検索する
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);