JavaScript引用タイプ——Arayタイプ

11590 ワード

Arayタイプ
Objectを除いて、ArayタイプはおそらくECMAScriptの中で一番よく使われているタイプです.ECMAScript配列の各項目は、任意のデータタイプのデータを保存できます.ECMAScript配列のサイズは、新しいデータを格納するためにデータの追加に伴って自動的に成長できるように動的に調整できる.配列を作成する基本的な方法は2つあります.第一はArayコンストラクタを使用することである.
var color = new Array();
var color = new Array(20); //length  20   
var color = new Array("red", "blue", "green");
var colors = new Array(3); //      3    
var names = new Array("Icey"); //      1 ,    "Icey"   
Arayコンストラクタを使用する場合はnewオペレータを省略することもできます.例えば:
var colors = Array(3);  //      3    
var names = Array("Icey"); ///      1 ,    "Icey"   
配列を作成する第二の基本的な方法は、配列の字面量表示法を使用することである.例えば:
var colors = ["red", "blue", "green" ];
var names = [];
var values = [1, 2, ]; //    ,         2 3    
var values = [,,,,,,];//    ,         5 6    
配列字面量表示法を使用しても、Arayコンストラクタは起動されません.
var colors = ["red", "blue", "green" ];
alert(colors[0]);
colors[2] = "black";
colors[3] = "brown";
配列の項数は、そのlength属性に保存されています.この属性は常に0または大きな値を返します.
var colors = ["red", "blue", "green" ];
var names = [];

alert(colors.length); //3
alert(names.length); //0
配列のlength属性はとても特定されています.読み取り専用ではありません.したがって、この属性を設定することにより、配列の最後から項目または項目の配列を削除することができます.例えば:
var colors = ["red", "blue", "green"];
colors.length = 2;
alert(colors[2]); //undefined
var colors = ["red", "blue", "green"];
colors.length = 4;
alert(colors[3]); //undefined
length属性を利用して、配列の最後に新しいエントリを追加することもできます.

var colors = ["red", "blue", "green"];
colors[colors.length] = "black";
alert(colors[colors.length]); //"black"

               length-1,            length。

var colors = ["red", "blue", "green"];
colors[99] = "black";
alert(colors.length); //100


- **1.      **
   :

if (value instanceof Array) {
//
}

if(Array.isArray(value)){
//
}


- **2.      **
       toLocalString()、toString() valueOf()  。  ,  toString()                                  。   valueOf()         。   ,                  toString()  。 :

var colors = ["red", "blue", "green"];
alert(colors.toString()); //red,bule,green
alert(colors.valueOf()); //red,blue,green
alert(colors); //red,blue,green

  alert()        ,         toString()  ,          toString()       。

var person1 = {
toLocaleString : function () {
return "Icey";
},
toString : function(){
return "icey";
}
};

var person2 = {
toLocaleString: function(){
return "Root";
},
toString : function(){
"root";
}
};

var people = [person1, person2];
alert(people); //icey,root
alert(people.toString); //icey,root
alert(people.toLocaleString); //Icey,Root


***join()  ***

var colors = ["red", "green", "blue"];
alert(colors.join(",")); //red,green,blue
alert(colors.join("||")); //red||green||blue


- **3.     **
             ,               。ECMAScript        **push()** **pop()**  ,            。
push()             ,            ,   **        **。
pop()             ,     length ,    **    **。

var colors = new Array();
var count = colors.push("red", "green");
alert(count); //2

count = colors.push("blue");
alert(count); //3

var item = colors.pop();
alert(item); //"blue"
alert(colors.length); //2


               , :

var colors = ["red", "blue"];
colors.push("green");
colors[3] = "black";
alert(colors.length); //4

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

- **4.      **
                 。           ,         。
push()          ,  shift()          。
shift()                  ,        1.    push() shift(),             。

var colors = new Array();
var count = colors.push("red", "green");
alert(count); //2

count = colors.push("blue");
alert(count); //3

var item = colors.shift();
alert(item); //red
alert(colors.length); //2


ECMAScript     unshift()  ,    ,unshift() shift()     :                     。  ,    unshift() pop()  ,             ,          ,        , :

var colors = new Array();
var count = colors.unshift("red", "green");
alert(count); //2

count = colors.unshift("blue");
alert(count); //3

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

- **5.       **

                       :**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, 1, 5, 10, 15];
values.sort();
alert(values); //0,1,10,15,5

sort()                。
          ,                       ,           0,                         。 :

function compare(value1, value2) {
if(value1 < value2){
return -1;
}else if(value1 > value2){
return 1;
}else{
return 0;
}
}


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

               , :

function compare(value1, value2) {
if(value1 < value2){
return 1;
}else if(value1 > value2){
return -1;
}else{
return 0;
}
}


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

         valueOf()              ,              。

function compare(value1, value2) {
return value2 - value1;
}


- **6.      **

ECMAScript                     。
- **concat()**  :                    。    ,                 ,                   ,          。    concat()          ,              。

var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow", ["black", "brown"]);

alert(colors); //red,green,blue
alert(colors2); //red,green,blue,yellow,black,brown


- **slice()**  :                      。slice()             ,             。           ,slice()                         。       ,                ——          。slice()          。 :

var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow

  slice()        ,                  。            ,      。

- **splice()**  :
-   :          ,         :                 。 :splice(0,2)          。
-   :               ,    3   :    、0(      )      。  :splice(2,0,"red","green")         2       "red","green".
-   :               ,           ,    3   :    、                 。  :splice(2,1,"red","green")。
splice()            ,                (         ,        )。

var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1);
alert(colors); //green,blue
alert(removed); //red
removed = colors.splice(1,0,"yellow","orange");
alert(colors); //green,yellow,orange,blue
alert(removed); // []
removed = colors.splice(1,1,"red","purple");
alert(colors); //green,red,purple,orange,blue
alert(removed); //yellow


- **7.     **
ECMAScript5           :**indexOf()** **lastIndexOf()**。            :      (   )           。  ,indexOf()        (  0)      ,lastIndexOf()               。
                    ,           -1          (===)。

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 : "Icey"};
var people = [{name : "Icey"}];
var morePeople = [person];
alert(people.indexOf(person)); //-1
alert(morePeople.indexOf(person)); //0


- **8.      **
ECMAScript5      5     。          :            (   )           ——  this  。                 :     、                。         ,                           。   5        。
 - every():             ,            true,   true。
 - filter():             ,        true       。
 - forEach():             。         。
 - ma():             ,                。
- some():             ,           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

var someResult = numbers.some(function (item,index,array) {
return (itme>2);
});
alert(someResult); //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]

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]

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function (item,index,array) {
//
})

- **9.      **
ECMAScript5              :**reduce()** **reduceRight()**。               ,            。reduce()          ,       。reduceRight()         ,        。
            :             (   )          。  reduce() reduceRight()     4   :    ,   ,         。                          。               ,              ,            。

var values = [1,2,3,4,5];
var sum = values.reduce(function (prev,cur,index,array) {
return prev+cur;
})
alert(sum); //15

var values = [1,2,3,4,5];
var sum = values.reduceRight(function (prev,cur,index,array) {
return prev+cur;
})
alert(sum); //15

142