JavaScript引用タイプ——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