javascriptの配列、オブジェクト
7936 ワード
javascript配列操作大全書:
var array=「first」「second」「third」
print(array["0])///文字列0を下付きとする
print(array[0])//数字0を下付きとする
彼らは同じ結果を得ることができます.いずれもfirstです.
JavaScript配列は、実際には下付きの数字を文字列に変換し、この文字列を配列オブジェクトの属性としてアクセスします.はっきり言って、アクセス属性は他のオブジェクトと同じです.ArayはObjectとして、key-valueシーケンスの割り当てを受ける場合、keyが正の整数に変換できる場合にのみ、lengthを修正することができる.for.in一つで見られます.JavaScriptの配列は本質的にはまだキー値であるという形(本質的にはオブジェクトである)で、連続メモリブロック(C/Javaでは連続している)ではなく、一つのハッシュリストである.
配列削除要素を実現する2つの方法は以下の通りです.
オブジェクト
JavaScriptの言語特性のために、共通のオブジェクトに属性を動的に追加し、削除することができます.だからObjectはJSの特殊な集合とも見なされる.
オブジェクトに属性があります.オブジェクトの属性は別のオブジェクトでもいいです.JavaScriptオブジェクト自体が辞書であるか、またはJava言語のMapであるか、関連配列と呼ばれるか、すなわちキーによってオブジェクトに関連しているか、このオブジェクト自体がオブジェクトでもあり、この定義により、JavaScriptオブジェクトは任意の複雑なデータ構造を表すことができることが分かります.属性はキーペアからなります.属性の名前と属性の値です.属性の名前は文字列で、値は任意のJavaScriptオブジェクト(JavaScriptのすべてのオブジェクトは関数を含む)です.例えば、オブジェクトを宣言します.
Aray:
新規:var ary=new Aray()またはvar ary=[];
追加:ary.push(value);
削除:delete ary[n]//本当の意味での削除ではなく、n番目の操作をundefinedとして行います.配列の長さは変わりません.
巡回:for(var i=0;i<ary.length;i++)ary[i];またはfor(var item in obj)obj[item](for inを使用することを推奨しません)for inは配列のすべての属性を遍歴しますので、lengthを使って配列の有効項目にのみアクセスします.(属性は数字に変換できます.)下付きが数字ではないものにはアクセスしません.
Object:
新規:var obj=new Object()またはvar obj={}
増加:obj[key]=value;(keyはstring)
削除:delete obj[key]或いはdelete obj.name;
巡回:for(var key in obj)obj[key]
オブジェクト操作:
//shift: , ; undefined
var a = [1,2,3,4,5];
var b = a.shift(); //a:[2,3,4,5] b:1
//unshift: ,
var a = [1,2,3,4,5];
var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7
: IE6.0 undefined,FF2.0 7, , splice
//pop: , ; undefined
var a = [1,2,3,4,5];
var b = a.pop(); //a:[1,2,3,4] b:5
//push: ,
var a = [1,2,3,4,5];
var b = a.push(6,7); //a:[1,2,3,4,5,6,7] b:7
//concat: ,
var a = [1,2,3,4,5];
var b = a.concat(6,7); //a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]
//splice(start,deleteCount,val1,val2,...): start deleteCount , val1,val2,...
var a = [1,2,3,4,5];
var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]
var b = a.splice(0,1); // shift
a.splice(0,0,-2,-1); var b = a.length; // unshift
var b = a.splice(a.length-1,1); // pop
a.splice(a.length,0,6,7); var b = a.length; // push
//reverse:
var a = [1,2,3,4,5];
var b = a.reverse(); //a:[5,4,3,2,1] b:[5,4,3,2,1]
//sort(orderfunction): ,sort ,
var a = [1,2,3,4,5];
var b = a.sort(); //a:[1,2,3,4,5] b:[1,2,3,4,5]
//slice(start,end):
var a = [1,2,3,4,5];
var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]
//join(separator): , separator ,
var a = [1,2,3,4,5];
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"
JavaScriptの配列では、数字の下付きは最終的に解釈器によって文字列に変換されます.つまり、数字の下付きは数字を見ているだけで、実際には文字の属性名です.JavaScriptでは、数字の下付き文字列の下付き文字列はすべて「JavaScript配列」という特殊なオブジェクトの属性です.var array=「first」「second」「third」
print(array["0])///文字列0を下付きとする
print(array[0])//数字0を下付きとする
彼らは同じ結果を得ることができます.いずれもfirstです.
JavaScript配列は、実際には下付きの数字を文字列に変換し、この文字列を配列オブジェクトの属性としてアクセスします.はっきり言って、アクセス属性は他のオブジェクトと同じです.ArayはObjectとして、key-valueシーケンスの割り当てを受ける場合、keyが正の整数に変換できる場合にのみ、lengthを修正することができる.for.in一つで見られます.JavaScriptの配列は本質的にはまだキー値であるという形(本質的にはオブジェクトである)で、連続メモリブロック(C/Javaでは連続している)ではなく、一つのハッシュリストである.
配列削除要素を実現する2つの方法は以下の通りです.
// :
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
var array = ["one", "two", "three", "four", "five", "six"];
array.remove(0);// two,three,four,five,six
array.remove(-1);// two,three,four,five
array.remove(0,2);// 0-2 (3 ) five
// :
Array.remove = function(array, from, to) {
var rest = array.slice((to || from) + 1 || array.length);
array.length = from < 0 ? array.length + from : from;
return array.push.apply(array, rest);
};
var array = ["one", "two", "three", "four", "five", "six"];
Array.remove(array, 0, 2);// 0, 1, 2
Array.prototype.remove , , Array remove ( ), Array.remove Array , 。
配列の繰り返し://Array , , :
function unique(arr) {
var result = [], isRepeated;
for (var i = 0, len = arr.length; i < len; i++) {
isRepeated = false;
for (var j = 0, len1 = result.length; j < len1; j++) {
if (arr[i] == result[j]) {
isRepeated = true;
break;
}
}
if (!isRepeated) {
result.push(arr[i]);
}
}
return result;
}
// , , 。 , 。 hashtable , 。 , Javascript hashtable , :
function unique(arr) {
var result = [], hash = {};
for (var i = 0, elem; (elem = arr[i]) != null; i++) {
if (!hash[elem]) {
result.push(elem);
hash[elem] = true;
}
}
return result;
}
配列はJavaScriptが提供する内部オブジェクトであり、標準的な集合であり、中の要素を追加したり、削除したりすることができます.また、forサイクルを通して中の要素を遍歴することができます.それでは配列以外にもJavaScriptの中に他の集合がありますか?オブジェクト
JavaScriptの言語特性のために、共通のオブジェクトに属性を動的に追加し、削除することができます.だからObjectはJSの特殊な集合とも見なされる.
オブジェクトに属性があります.オブジェクトの属性は別のオブジェクトでもいいです.JavaScriptオブジェクト自体が辞書であるか、またはJava言語のMapであるか、関連配列と呼ばれるか、すなわちキーによってオブジェクトに関連しているか、このオブジェクト自体がオブジェクトでもあり、この定義により、JavaScriptオブジェクトは任意の複雑なデータ構造を表すことができることが分かります.属性はキーペアからなります.属性の名前と属性の値です.属性の名前は文字列で、値は任意のJavaScriptオブジェクト(JavaScriptのすべてのオブジェクトは関数を含む)です.例えば、オブジェクトを宣言します.
var object = {
field : "self",
getField : function(){
return this.field;
},
outter:{
inner : "inner text",
field : "inner field",
getInfo : function(){
return this.inner + " and " + this.field;
}
}
}
alert(object.getField()); // self
alert(object.outter.getInfo()); // inner text and inner field
次にArayとObjectの特性を比較します.Aray:
新規:var ary=new Aray()またはvar ary=[];
追加:ary.push(value);
削除:delete ary[n]//本当の意味での削除ではなく、n番目の操作をundefinedとして行います.配列の長さは変わりません.
巡回:for(var i=0;i<ary.length;i++)ary[i];またはfor(var item in obj)obj[item](for inを使用することを推奨しません)for inは配列のすべての属性を遍歴しますので、lengthを使って配列の有効項目にのみアクセスします.(属性は数字に変換できます.)下付きが数字ではないものにはアクセスしません.
Object:
新規:var obj=new Object()またはvar obj={}
増加:obj[key]=value;(keyはstring)
削除:delete obj[key]或いはdelete obj.name;
巡回:for(var key in obj)obj[key]
オブジェクト操作:
/**
*
*/
// :
var obj = new Object();
// :
var obj1 = {};
// : ,
var obj2 = {
name:"JACK",
age:23
};
/**
*
*/
// : .
obj.name = "Jack";
obj.age = 23;
// : []
obj["sex"] = "F";
var k = "aaa";obj[k] = "p";//
// : ,
for(var i=0; i<10; i++){
obj["kind"+i] = i;
}
// : eval()
var hello = "heihei";eval("obj.no="+"hello");
eval("obj.no2=3");
/**
*
*/
// :
var name = obj.name;
var age = obj.age;
// :
var sex = obj["sex"];
var k = "aaa";var aaa = obj[k];//
// : ,
for(var i=0; i<10; i++){
var ii = obj["kind"+i];alert(ii);
}
// : eval()
var no = eval("obj.no");
var k = "no";var no2 = eval("obj." + k + 2);
var kind2 = eval("obj.kind"+2);
var k = "kind";var kind3 = eval("obj."+k+3);
alert("name=="+name);
alert("age=="+age);
alert("sex=="+sex);
alert("aaa=="+aaa);
alert("no=="+no);
alert("no2=="+no2);
alert("kind2=="+kind2);
alert("kind3=="+kind3);
/**
*
*/
delete obj["name"];
/**
*
*/
for(var key in obj){
alert(" :" + key + " :" + obj[key]);
}
/**
* : ,
* :
*/