第五章:引用タイプ

12591 ワード

1:Array.isArray()メソッド
この方法の目的は,ある値が配列であるか否かを決定することである.
if(Array.isArray(value)){

}

 
2:スタックメソッド
push()とpop()メソッド
//   
        var colors=["red","blue"];
        colors.push("brown");
        colors[3]="black";
        alert(colors.length);  //4

        var item=colors.pop();
        alert(item);        //black

 
3:キューメソッド
Push()とshift()メソッド
//   
         var colors=new Array();
        var count=colors.push("red","green");
        alert(count);
        count=colors.push("black");
        alert(count);
        var item=colors.shift();
        alert(item);    //red
        alert(colors.length);

 
unshift()メソッド
unshift()メソッドとshift()メソッドは、配列の先端に任意のアイテムを追加し、新しい配列の長さを返すために使用されます.したがって、unshift()メソッドとpop()メソッドを併用すると、配列の先端にアイテムを追加し、配列の末端にアイテムを除去する逆方向からキューをシミュレートできます.
        var colors=new Array();
        var count=colors.unshift("red","green");
        alert(count);

        count=colors.unshift("black");
        alert(count);

        var item=colors.pop();
        alert(item);    //green
        alert(colors.length);

 
4:並べ替え方法
配列に2つの直接ソートメソッドreverse()とsort()が存在する
reverse()メソッドは配列項目の順序を反転します
var values=[1,2,3,4,5];
values.reverse();
alert(values);    //5,4,3,2,1

 
デフォルトでは、sortメソッドは配列アイテムを昇順に並べ、sort()メソッドは各配列アイテムのtoString()変換メソッドを呼び出し、sort()メソッドの比較も文字列です.
var values=[0,25,5,33,15];
values.sort();
alert(values);   //0,15,25,33,5

 
このような比較は正しくないため,sort()法がパラメータとして比較関数を受け入れる必要がある.
function compare(a,b){
        if (a>b) {
            return 1;
        } else if (a<b) {
            return -1;
        } else {
            return 0;
        }
    }

    var values = [0, 25, 5, 33, 15];
    values.sort(compare);
    alert(values); //0,5,15,25,33

 
降順であればcompareの数値を交換すればよい.
あるいはより速い方法は上述の基礎の上でreverse()の方法を利用します
 
5:操作方法
*concat()メソッド、接続
         var colors=["red","green","blue"];
         var colors2=colors.concat("yellow",["black","blown"]);
         alert(colors);    //red,green,blue
         alert(colors2);   //red,green,blue,yellow,black,brown

 
*slice()メソッドで、現在の配列の1つ以上のアイテムに基づいて新しい配列を作成します.
    var colors=["red","green","blue","yellow","purple"];
    var colors2=colors.slice(1);    //green,blue,yellow,purple
    var colors3=colors.slice(1,4);  //green,blue,yellow
    alert(colors2);
    alert(colors3);

 
slice()メソッドのパラメータに負数がある場合は、配列の長さに配列を加えて対応する位置を決定します.たとえば、5つの配列を含む配列でslice(-1,-2)を呼び出すと、slice(4,3)を呼び出す結果と同じです.終了位置が開始位置より小さい場合は、空の配列を返します.
 
*splice()メソッド
(1)削除:任意の数のアイテムを削除できます.2つのパラメータを指定するだけです.最初のアイテムを削除する場所と削除するアイテムの数
たとえば、splice(0,2)は配列の最初の2つを削除します.
    var colors=["red","green","blue"];
    var removed=colors.splice(0,1);  
    alert(colors);          //green,blue
    alert(removed);         //red

(2)挿入:指定した場所に任意の数の項目を挿入できます.3つのパラメータ:開始位置、0(削除する項目数)、および挿入する項目のみを指定できます.複数の項目を挿入する場合は、4番目の5番目の任意の複数の項目を入力できます.たとえば、splice(2,0,red,green)は、現在の位置2から文字列「red」「green」を挿入します.
 var colors = ["red", "green", "blue"];
 var removed = colors.splice(1, 0, "yellow", "orange");
 alert(colors); //red,yellow,orange,green,blue
 alert(removed); //       

(3)置換:任意の項目を指定した場所に挿入し、同時に任意の数の項目を削除することができ、3つのパラメータ:開始位置、削除する項目数、挿入する任意の数の項目を指定するだけでよい.挿入した項目数は削除した項目数に等しくなく、例えばsplice(2,1,red,green))は、現在の配列位置2の項目を削除し、位置2から文字列「red」、「green」を挿入します.
var colors = ["red", "green", "blue"];
var removed=colors.splice(1,1,"yellow","orange");
alert(colors);      //red,yellow,orange,blue
alert(removed);     //green2

 
6:位置方法
indexOf()メソッド配列の先頭から後ろへ検索
LastIndexOf()メソッド配列の末尾から検索
どちらのメソッドも、検索するアイテムと開始位置のインデックスの2つのパラメータを受信します.
var numbers=[1,2,3,4,5,4,3,2,1];
alert(numbers.indexOf(4));  //3
alert(numbers.lastIndexOf(4));  //5

alert(numbers.indexOf(4,4));  //5
alert(numbers.lastIndexOf(4,4));  //3

var person={name:"yin"};
var people=[{name:"yin"}];

var morePeople=[person];

alert(people.indexOf(person)); //-1
alert(morePeople.indexOf(person));  //0

 
7:反復メソッド
*every():配列内の各項目に対して所定の関数を実行し、その関数の各項目がtrueを返すとtrueを返します.
var numbers=[1,2,3,4,5,4,3,2,1];
var everyResult=numbers.every(function(item,index,array){
    return (item>2);
})
alert(everyResult);   //false

 
*filter():配列内の各項目に対して所定の関数を実行し、trueの項目からなる配列を返す
var numbers=[1,2,3,4,5,4,3,2,1];
var filterResult=numbers.filter(function(item,index,array){
    return (item>2);
})
alert(filterResult);   //[3,4,5,4,3]

 
*forEach():配列の各項目に対して所定の関数を実行します.このメソッドは値を返しません.
var numbers=[1,2,3,4,5,4,3,2,1];
var forEachResult=numbers.forEach(function(item,index,array){
    //      
})

 
*map():配列内の各項目に対して所定の関数を実行し、各関数呼び出しの結果からなる配列を返します.
var numbers=[1,2,3,4,5,4,3,2,1];
var mapResult=numbers.map(function(item,index,array){
    return item*2;
})
alert(mapResult);   //[2,4,6,8,10,8,6,4,2]

 
*some():配列内の各項目に対して所定の関数を実行し、その関数がいずれかの項目に対してtrueを返すとtrueを返します.
var numbers=[1,2,3,4,5,4,3,2,1];
var someResult=numbers.some(function(item,index,array){
    return (item>2);
})
alert(someResult);   //true

 
8:縮小方法
reduce()とreduceRight()
reduce()メソッドは,配列の第1項から最後まで1つずつ巡回する.
reduceRight()メソッドは、配列の最後の項目から最初の項目に進むことです.