Array
全くテストしてない
by ethertank
JavaScript
;(function(AP, undefined) {
"use strict";
/*
pop : 配列の末尾の要素を要素を削除
push : 配列の末尾に要素を追加
reverse : 配列要素の順序を反転
shift : 配列の先頭の要素を削除
sort : 配列の並び順を変更
splice : 配列の要素を置き換え
unshift : 配列の先頭に要素を追加
concat : 配列を連結
join : 配列の要素を指定文字列で区切って文字列として連結
slice : 指定した範囲の配列要素を抜き出す
toSource : 指定された配列を表す配列リテラルを返す。この値は新しい配列を作る際に使用可能。※Object.prototype.toSource の上書き。
toString : 配列とその要素を表す文字列を返す。※Object.prototype.toString の上書き。
indexOf : ※済。指定された値と等しい値を持つ最初の(添字の一番小さい)要素の添字を返す。見つからなかったら -1 を返す。
lastIndexOf : ※済。指定された値と等しい値を持つ最後の(添字の一番大きい)要素の添字を返す。見つからなかったら -1 を返す。
isArray : 与えられた変数が配列であるかどうかを調べる。
length : 配列の要素数を表す符号なし 32 ビット整数。
every : 配列要素全てがテスト関数を満たした場合に true を返す
some : ある配列の少なくとも1つの要素が与えられたテスト関数を満たした場合に true を返す
filter : 与えられたフィルタリング関数が true を返す配列要素群で新しい配列を生成
forEach : 配列要素全てに対して関数を呼び出す
map : 配列要素全てに対して関数を呼び出し、その結果からなる新しい配列を生成
reduce : 1つの値に還元されるように、配列の2つの値に対し(左から右へ)同時に関数を適用していく
reduceRight : 1つの値に還元されるように、配列の2つの値に対し(右から左へ)同時に関数を適用していく
*/
AP.every || (AP.every = function(fn /*,thisObj*/ ) {
if (typeof fn !== "function") throw new TypeError();
var thisObj = arguments[1];
for (var i = 0, len = this.length; i < len; ++i) if (i in this && !fn.call(thisObj, this[i], i, this)) return false;
return true;
});
AP.filter || (AP.filter = function(fn /*, thisObj*/ ) {
if (typeof fn !== "function") throw new TypeError();
var res = [],
thisObj = arguments[1];
for (var i = 0, len = this.length; i < len; ++i) {
if (i in this) {
var val = this[i];
if (fn.call(thisObj, val, i, this)) res.push(val);
}
}
return res;
});
// Modify from MDN https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/forEach
AP.forEach || (AP.forEach = function(fun /*,...