배열은 특정 유형의 데이터 모음입니다. 데이터 유형은 정수, 문자열 또는 객체일 수 있습니다.
Javascript는 다차원 배열을 지원하지 않지만 배열은 객체를 포함할 수 있기 때문에(배열도 객체임) 배열은 서로 중첩되어 다차원 배열과 유사한 기능을 달성할 수 있습니다.
이때, 10개의 요소를 포함하는 a에 대한 메모리 공간이 열렸습니다. a[2]와 같이 배열 이름과 [하첨자]를 사용하여 호출합니다. 그러나 현재 요소는 초기화되지 않았습니다. 호출은 정의되지 않은 상태를 반환합니다.
다음 코드는 변수 배열을 정의하고 값을 할당합니다.
위에서 언급했듯이 객체는 배열에 배치될 수 있습니다. 예를 들어 다음 코드는 다음과 같습니다.
인스턴스화 시 배열에 직접 값을 할당할 수도 있습니다. 예:
a와 b는 모두 배열이지만, b는 또 다른 인스턴스를 생성하기 위해 암시적 선언을 사용합니다. 이때, Alert(a==b)를 사용하면 false
가 뜹니다.
실제로 Javascript는 다차원 배열을 지원하지 않습니다. ASP에서는 Dim a(10,3)을 사용하여 var a = new Array(10,3)을 사용하면 됩니다. , 오류가 보고됩니다
그러나 앞에서 언급한 것처럼 배열에는 객체가 포함될 수 있으므로 배열의 요소를 배열로 선언할 수 있습니다. 예를 들면 다음과 같습니다.
효과는 동일합니다. a는 일반 인스턴스화를 사용하고 b는 암시적 선언이며 결과는 다차원 배열입니다.
간단한 객체를 생성합니다. 일반적으로 호출은 aa.x를 통해 이루어집니다. 배열 리터럴로 사용되는 경우, Alert(aa["x"])를 사용하면 cat
이 나타납니다.
var a = {x: "cat" , y: "맑음"};
alert(a["y"]) //햇빛 팝업
이것은 객체를 생성하는 또 다른 방법이지만 결과는 같습니다
2. 배열 요소의 연산
위에서 언급한 것처럼 배열 [아래 첨자]를 통해 요소를 읽고 쓸 수 있습니다.
아래 첨자의 범위는 0~(23(위 첨자 2)-1)이고, 아래 첨자는 음수, 부동 소수점 또는 부울 값 시간이라도 배열은 자동으로 객체 유형으로 변환됩니다. 예:
var b = new Array();
b[2.2] = "XXXXX";
alert(b[2.2]) //-> >
이것은 b["2.2"] = "XXXXX"와 같습니다.
2.1 배열 루프
var a = [1,2,3,4,5,6];
for(var i =0; i
alert(a[i]);
}
가장 일반적으로 사용되는 코드입니다. 배열을 순회한 후 코드가 1~6까지 순서대로 나타납니다.
자주 사용되는 또 다른 코드가 있습니다:
var a = [1,2,3,4,5 ,6];
for(var e in a){
alert(e);
}
여전히 1~6이 순서대로 나타납니다. for...in은 순회 객체(배열은 특수 객체) 객체입니다. 배열에 속성 이름이 없으므로 값이 직접 출력됩니다. . 이 구조 설명은 개체에 사용됩니다. 예:
var a = {x:1,y :2,z:3};
for(var e in a){
alert(e ":" a[e]);
}
이 때 e는 속성 이름, 즉 x, y, x를 가져옵니다. 값을 가져오려면 배열 이름 [속성]을 사용하므로 a[e]는 a["x"]와 동일합니다. , a["y"], a["z"]
2.2 공통 배열 함수
연결
기존 배열 뒤에 배열을 추가하고 기존 배열에 영향을 주지 않고 새 배열을 반환합니다.
var a = [123];
var b = "sunnycat";
var c = ["www",21,"ido"];
var d = {x:3.14, y:"SK"};
var e = [1, 2,3,4,[5,6,[7,8]]];
alert(a.concat(b)) // -> 123,sunnycat
alert (a) ; // -> 123
alert(b.concat(c, d)) // -> ); / / -> www,21,ido,sunnycat
alert(e.concat(11,22,33).join(" # ")) // -> # 5, 6,7,8 # 11 # 22 # 33
연결(앞의 a)이 숫자 값, 부울 값 또는 객체인 경우 문자열이 연결될 때 오류가 보고됩니다. 배열의 경우, 문자열 뒤에는 배열의 첫 번째 요소가 오고, 배열 연결 문자열은 새 요소를 추가합니다. (이유는 모르겠습니다. 배열이 포함된 경우 공개해 주세요.) 배열과 객체는 연결 후에도 그대로 유지됩니다.
가입
지정된 구분 기호로 배열을 연결하고 배열을 문자열로 변환합니다:
var a = ['a','b','c','d','e','f','g'];
lert(a.join( "," )); // -> a,b,c,d,e,f,g는 a.toString()
alert(a.join(" x ")); >a x b x c x d x e x f x g
이해하기 쉽지만, 1차원 배열만 변환된다는 점에 유의해야 합니다. 배열에 배열이 있는 경우에는 Join으로 지정된 문자열 연결이 사용되지 않고 기본 toString()이 사용됩니다. 사용됨(예: )
var a = ['a',' b', 'c','d','e','f','g',[11,22,33]];
alert(a.join(" * ")) // - >a * b * c * d * e * f * g * 11,22,33
참고: 어레이 내부의 어레이는 * 연결에 사용되지 않습니다
팝
배열의 마지막 요소를 삭제하고 요소를 반환
var a = ["aa","bb","cc"];
document.write(a.pop()) // -> ); // ->아,bb
참고: 배열이 비어 있으면 정의되지 않음이 반환됩니다
푸시
배열 끝에 배열을 추가하고 배열의 새 길이를 반환합니다
var a = ["aa"," bb", "cc"];
document.write(a.push("dd")); // -> 4
document.write(a); // -> aa,bb, cc,dd
document.write(a.push([1,2,3])) // -> 5
document.write(a) // -> ,dd, 1,2,3
concat과의 차이점은 concat은 원래 배열에 영향을 주지 않고 직접 새 배열을 반환하는 반면, push는 원래 배열을 직접 수정하고 배열의 새 길이를 반환한다는 점입니다
정렬
배열 정렬, 예시를 먼저 살펴보겠습니다
var a = [11,2,3,33445,5654,654,"asd","b"];
alert(a.sort()) // -> ,33445,5654, 654,asd,b
결과가 놀랍지 않나요? 네, 정렬은 정수 크기가 아니라 문자열 비교를 통해 이루어집니다. 즉, 첫 번째 문자의 ANSI 코드가 같으면 먼저 순위가 매겨집니다. 두 번째 문자를 가져온 다음 비율을 정수 값으로 비교하려면 이렇게 하면 됩니다.
var a = [11,2,3 ,33445, 5654,654];
a.sort(function(a,b) {
return a - b;
});
alert(a); ,3, 11,654,5654,33445
sort() 메서드에는 코드의 함수인 선택적 매개 변수가 있습니다. 이는 간단한 예입니다. 숫자가 아닌 경우에는 더 많은 판단이 필요하므로 여기서는 자세히 설명하지 않겠습니다.
역방향
배열의 역정렬은 sort()와 동일하며 첫 번째 문자의 ASCII 값을 비교용으로 사용합니다.
var a = [11,3,5,66,4];
alert(a.reverse()) // -> ,5,3 ,11
배열에 배열도 포함되어 있으면 객체로 처리되어 요소가 추출되지 않습니다.
var a = ['a','b','c','d','e','f','g',[4,11 ,33] ];
alert(a.reverse()); // -> 4,11,33,g,f,e,d,c,b,a
alert(a.join( " * " )); // -> 4,11,33 * g * f * e * d * c * b * a
논리적으로 11행의 마지막에 있어야 합니다. 여기에서는 4, 11, 33이 완전한 객체로 비교되므로 첫 번째 순위가 되므로
이해가 안 되는 경우에는 Join()을 사용하여 문자열을 지정하세요. 함께하면 훨씬 더 명확해질 것입니다.
교대
배열의 첫 번째 요소를 삭제하고 요소를 반환합니다. 이는 pop과 유사합니다
var a = ["aa","bb","cc"];
document.write(a.shift()) // -> >document.write(a); // ->bb,cc
참고: 배열이 비어 있으면 정의되지 않음이 반환됩니다
변속 해제
shift와 달리 배열 앞에 요소를 추가하고 배열의 새 길이를 반환합니다.
코드 복사 코드는 다음과 같습니다.
var a = ["aa","bb","cc"];
document.write(a.unshift(11)) // -> 4 참고: IE에서는 정의되지 않음을 반환합니다.
document.write(a); // -> 11,aa,bb,cc
document.write(a.unshift([11,22])) // -> document.write(a); // -> 11,22,11,aa,bb,cc
document.write(a.unshift("cat")) // -> .write(a); // -> 고양이,11,22,11,aa,bb,cc
이 메소드는 IE에서 unundefined를 반환하는데, 이는 Microsoft 버그인 것 같습니다. Firefox에서는 배열의 새로운 길이를 올바르게 사용할 수 있습니다.
슬라이스
배열 조각 반환
var a = ['a',' b', 'c','d','e','f','g'];alert(a.slice(1,2)) // -> a.slice(2)); // -> c,d,e,f,g
alert(a.slice(-4)) // -> >alert( a.slice(-2,-6)); // -> 비어 있음
a.slice(1,2), 첨자 1부터 첨자 2까지의 숫자, 첨자 2가 있는 요소는 포함되지 않습니다.
매개변수가 하나만 있는 경우 기본값은 The last입니다.
배열의 -4는 아래쪽에서 4번째 요소를 나타내므로 의 마지막 행은 아래쪽에서 2번째부터 시작하므로 이전 항목임이 분명합니다. 요소를 얻을 수 없으므로 빈 배열을 반환합니다. a.slice(-6,-2)로 변경하면 b,c,d,e를 반환합니다.
접속
배열에서 조각의 요소를 삭제하고 삭제된 요소를 반환합니다
코드 복사
코드는 다음과 같습니다.var a = [1,2,3 ,4, 5,6,7,8,9];document.write(a.splice(3,2)) // -> 4,5
document.write(a); / -> ; 1,2,3,6,7,8,9document.write(a.splice(4)) // -> 🎜>문서가 반환됩니다. // -> 1,2,3,6
document.write(a.splice(0,1)) // -> .write(a); // -> 2,3,6
document.write(a.splice(1,1,["aa","bb","cc"])); > 3
document.write(a); // -> 2,aa,bb,cc,6,7,8,9
document.write(a.splice(1,2,"ee) ").join(" #")); // -> aa,bb,cc#6
document.write(a); // -> 2,ee,7,8,9
document.write(a.splice(1,2,"cc","aa","tt").join("#")) // -> ; // -> 2,cc,aa,tt,8,9
이 메소드의 두 번째 매개변수는 IE에서 필수입니다. 채워지지 않은 경우 기본값은 0입니다(예: a.splice(4)). IE에서는 빈 값을 반환하며 효과는 a와 동일합니다. 스플라이스(4,0 )
toString
배열을 문자열로 변환하는 것은 배열뿐만 아니라 모든 객체에서 이 방법을 사용할 수 있습니다.
코드 복사
코드는 다음과 같습니다 :
var a = [5,6,7,8,9,["A","BB"],100];document.write(a.toString()) ; / / -> 5,6,7,8,9,A,BB,100var b = new Date()document.write(b.toString()) // -> 2009년 8월 8일 토요일 17:08:32 UTC 0800var c = function(s){
alert(s);}
document.write(c.toString()); // -> ; 기능{ 경고 }
Boolean 값은 true 또는 false를 반환하고, object는 [object objectname]을 반환합니다.
join() 메서드와 비교하여, Join()은 1차원 배열만 교체하고, toString()은 1차원 배열에 관계없이 전체 배열을 교체합니다. 배열). 차원 또는 다차원) 완전 평면
동시에 이 방법은 10진수, 2진수, 8진수 및 16진수 변환에 사용할 수 있습니다. 예:
코드 복사
코드는 다음과 같습니다.
var a = [5,6,7,8,9,"A","BB" ,100]; for(var i=0; idocument.write(a[i].toString() " 바이너리 시스템은 " a[i].toString입니다. (2) " 및 8진수 시스템은 " a[i].toString(8) ", 16진수는 " a[i].toString(16)) // ->
출력 결과:
바이너리 5는 101, 8진수 체계는 5, 16진수 체계는 5
6의 2진수 체계는 110, 8진수 체계는 6, 16진수 체계는 6
7의 2진수 체계는 111, 8진수 체계는 7이고, 16진수 체계는 7
>8의 이진수 체계는 1000, 8진수 체계는 10, 16진수 체계는 8입니다.
9의 이진수 체계는 1001, 8진수 체계는 11이고, 16진법은 9이다. A
A의 2진법은 A, 8진법은 A, 10진법은 A이다. 16진법은 A
BB, 2진법은 BB, 8진법은 BB, 그리고 16진수는 BB
100은 2진수 1100100, 8진수는 144, 16진수는 64
변환은 요소에 대해서만 수행할 수 있습니다. 전체 배열을 변환하면 배열이 변경되지 않고 반환됩니다
toLocaleString
주로 Date 객체에 사용되는 로컬 형식 문자열을 반환합니다
var a = new Date();
document .write(a.toString()); // -> 2009년 8월 8일 토요일 17:28:36
document.write(a.toLocaleString()) // -> , 2009 날짜 17:28:36
document.write(a.toLocaleDateString()) // -> 2009년 8월 8일
차이점은 toString()은 표준 형식을 반환하고 toLocaleString()은 [제어판]>>[지역 및 언어 옵션]에서 [시간]을 수정하여 전체 날짜를 로컬 형식으로 반환한다는 것입니다. 및 [긴 날짜] 형식), toLocaleDateString()은 toLocaleString()과 동일하지만 시간이 덜 걸립니다
값
객체마다 다른 원래 값을 반환합니다. 출력에 사용하는 경우 toString()과 유사하지만 toString()은 문자열 유형을 반환하는 반면 valueOf()는 원래 객체 유형을 반환합니다
var a = [1,2,3 ,[4 ,5,6,[7,8,9]]];
var b = new Date();
var c = true;
var d = function(){
Alert(" sunnycat");
};
document.write(a.valueOf()) // -> >document.write(typeof (a.valueOf())); // -> document.write(b.valueOf()) // -> b.valueOf ())); // -> number
document.write(c.valueOf()) // -> true
document.write(typeof(c.valueOf())) ; // -> boolean
document.write(d.valueOf()) // -> function () { 경고("sunnycat") }
document.write(typeof(d.valueOf) ()) ); // ->
배열도 객체이므로 typeof(a.valueOf())는 여전히 다차원 배열인 객체를 반환합니다
코드 복사
Date 개체는 1970년 1월 1일 이후의 밀리초 수를 반환합니다. Math 및 Error 개체에는 valueOf 메서드가 없습니다.