Array.pushArrayElement()

微妙。

by ethertank

JavaScript

// パターン1。普通な感じ。上層のループは引数毎に回すやつ、下層は引数として渡された配列の要素くるくる用
Array.prototype.pushArrayElement || (Array.prototype.pushArrayElement = function() {
    if (arguments.length === 0) return;

    var t = this;

    for (var i = 0, l = arguments.length; i < l; ++i) {
        if(arguments[i] instanceof Array) {
            for (var j = 0, m = arguments[i].length; j < m; ++j) {
                this.push(arguments[i][j]);
            }
        } else {
            this.push(arguments[i]);
        }
    }
});



// パターン2。forEach の polyfill が要るわいな。
/*
Array.prototype.pushArrayElement || (Array.prototype.pushArrayElement = function() {
    if (arguments.length === 0) return;

    var t = this;

    for (var i = 0, l = arguments.length; i < l; ++i) {
        if(arguments[i] instanceof Array) {
            arguments[i].forEach(function(elm, idx, ary) {
                t.push(elm);
            });
        } else {
            this.push(arguments[i]);
        }
    }
});
*/



/******************
 * テスト(`・ω・´)
 ******************/

//push
//var a = [0, 1, 2, 3, 4, 5];
//a.push(6);
//alert(a); //1,2,3,4,5,6
//alert(a[6]); //6
//複数の要素をpush
//var b = [0, 1, 2, 3, 4, 5];
//b.push(6, 7, 8);
//alert(b); //0,1,2,3,4,5,6,7,8
//alert(b.length); //9
//alert(b[6]); //6
//配列をpush
//var c = [0, 1, 2, 3, 4, 5];
//c.push([6, 7, 8]);
//alert(c);
//alert(c.length); //7 "つまり配列がまるごと一個の配列要素としてpushされ、多次元配列化している"
//alert(c[6]); //6,7,8
//配列を引数として渡し、各要素をプッシュする関数。もっといい関数名つけたい
//var d = [0, 1, 2, 3, 4, 5];
//d.pushArrayElement([6, 7, 8]);
//alert(d); //0,1,2,3,4,5,6,7,8
//alert(d.length); //9
//alert(d[6]); //6
//複数の配列が引数に指定可能
var e = [0, 1];
var f = [3, 4, 5];
e.pushArrayElement(2, f, [6, 7, 8]);
alert(e);
alert(e.length);
alert(e[6]);