1. 배열을 이해하십시오
배열은 특정 유형의 데이터 모음이며 데이터 유형은 정수, 문자열 또는 객체 일 수 있습니다.
JavaScript는 다차원 배열을 지원하지 않지만 배열에는 객체 (배열도 개체이기도 함)를 포함 할 수 있기 때문에 배열은 서로 중첩하여 다차원 배열과 유사한 함수를 달성 할 수 있습니다.
1.1 배열 정의
10 개의 요소가있는 배열 선언 :
코드 사본은 다음과 같습니다. var a = 새 배열 (10);
현재 10 가지 요소가 포함 된 메모리 공간이 열리고 배열 이름 Plus [Subscript]로 호출되었지만 현재 요소는 초기화되지 않으며 통화는 정의되지 않은 반환됩니다.
다음 코드는 변수 배열을 정의하고 값을 지정합니다.
코드 사본은 다음과 같습니다.
var a = 새로운 배열 ();
A [0] = 10;
a [1] = "AAA";
A [2] = 12.6;
위에서 언급했듯이 객체는 다음 코드와 같은 배열에 배치 할 수 있습니다.
코드 사본은 다음과 같습니다.
var a = 새로운 배열 ();
a [0] = true;
a [1] = document.getElementById ( "text");
a [2] = {x : 11, y : 22};
a [3] = 새로운 배열 ();
예를 들어 인스턴스화시 배열을 직접 할당 할 수도 있습니다.
코드 사본은 다음과 같습니다.
var a = 새로운 배열 (1, 2, 3, 4, 5);
var b = [1, 2, 3, 4, 5];
A와 B는 둘 다 배열이지만 B는 암시 적 선언을 사용하여 다른 인스턴스를 만듭니다. 현재 Alert (a == B)가 사용되면 False가 나타납니다.
1.2 다차원 배열
실제로 JavaScript는 다차원 배열을 지원하지 않습니다. ASP에서는 Dim A (10,3)를 사용하여 다차원 배열을 정의 할 수 있습니다. JavaScript에서 var a = 새 배열 (10,3)을 사용하면 오류 가보고됩니다.
그러나 앞에서 언급했듯이 배열에는 객체가 포함될 수 있으므로 배열의 요소는 배열로 선언 될 수 있습니다.
코드 사본은 다음과 같습니다.
var a = 새로운 배열 ();
a [0] = 새로운 배열 ();
a [0] [0] = 1;
경고 (a [0] [0]); // 팝 1
선언하면 값을 할당합니다
코드 사본은 다음과 같습니다.
var a = 새로운 배열 ([1,2,3], [4,5,6], [7,8,9]);
var b = [[1,2,3], [4,5,6], [7,8,9]];
동일한 효과는 A를 사용한다는 것은 기존의 인스턴스화, B는 암시 적 선언이며 결과는 다차원 배열입니다.
1.3 배열 리터럴
중국어 텍스트 어레이에서 무엇을 부르는지 정말로 모르겠습니다.
배열에 대해 말하면 배열 리터럴에 대해 이야기해야합니다. 배열은 실제로 특수한 개체입니다. 객체에는 고유 한 속성과 방법이 있습니다. 값과 호출은 객체 이름, 속성, 객체 및 메소드 ()를 통해 얻어지며 배열은 첨가를 사용하여 값을 얻습니다. 배열 리터럴은 배열과 매우 유사하며 특정 데이터 유형의 컬렉션입니다. 그러나 배열 리터럴은 기본적으로 객체, 선언 및 호출은 배열과 다릅니다.
코드 사본은 다음과 같습니다.
var aa = new Object ();
aa.x = "고양이";
aa.y = "sunny";
경고 (aa.x); // 팝업 고양이
간단한 개체를 만듭니다. 일반적인 전화는 AA.X를 통해입니다. 배열 리터럴로 취급되면 고양이는 경고로 나타납니다 (aa [ "x"].
코드 사본은 다음과 같습니다.
var a = {x : "cat", y : "sunny"};
경고 (A [ "Y"]); // Sunny를 팝업합니다
이것은 객체를 만드는 또 다른 방법이며 결과는 동일합니다.
2. 배열 요소의 작동
위에서 언급했듯이 요소는 배열 [subscript]를 통해 읽고 쓸 수 있습니다.
첨자 범위는 0 (23 (SuperScript 2) -1)입니다. 첨자가 음수, 플로팅 포인트 또는 부울 값 인 경우 배열은 예를 들어 객체 유형으로 자동 변환됩니다.
코드 사본은 다음과 같습니다.
var b = 새로운 배열 ();
B [2.2] = "xxxxx";
경고 (B [2.2]); //-> xxxxx
현재 B [ "2.2"] = "xxxxx"와 동일합니다.
2.1 배열 루프
코드 사본은 다음과 같습니다.
var a = [1,2,3,4,5,6];
for (var i = 0; i <a.length; i ++) {
경고 (a [i]);
}
이것은 가장 일반적으로 사용되는 것입니다. 배열을 통과하면 코드가 1 ~ 6으로 나타납니다.
일반적으로 사용되는 또 다른 것이 있습니다.
코드 사본은 다음과 같습니다.
var a = [1,2,3,4,5,6];
(var e in a) {
경고 (e);
}
또는 1 ~ 6을 차례로 팝업하십시오. in은 객체를 통과하는 객체입니다 (배열은 특수한 객체입니다). 배열에서 사용됩니다. 배열에는 속성 이름이 없으므로 값은 직접 출력됩니다. 이 구조문은 객체에 사용됩니다.
코드 사본은 다음과 같습니다.
var a = {x : 1, y : 2, z : 3};
(var e in a) {
경고 (e + ":" + a [e]);
}
현재 e는 속성 이름 (예 : x, y, x를 취합니다. 값을 얻으려면 배열 이름 [속성]이 사용되므로 [E]는 [ "x"], A [y "], A [z"], 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]];
경고 (a.concat (b)); //-> 123, Sunnycat
경고 (a); //-> 123
경고 (b.concat (c, d)); //-> sunnycatwww, 21, ido [Object Object]
경고 (c.concat (b)); //-> www, 21, Ido, Sunnycat
경고 (E.Concat (11,22,33) .join ( " #")); //-> 1 # 2 # 3 # 4 # 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 ()와 같습니다.
경고 (a.join ( "x")); //-> axbxcxdxexfxg
이것은 이해하기 쉽지만 1 차원 배열로만 변환된다는 점에 유의해야합니다. 배열에 배열이 있으면 Join으로 지정된 문자열을 사용하지 않지만 Default Tostring ()을 사용하십시오.
코드 사본은 다음과 같습니다.
var a = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', [11,22,33]];
경고 (a.join ( " *")); //-> a * b * c * d * e * f * g * 11,22,33
참고 : 배열의 배열은 * 연결에 사용되지 않습니다.
팝
배열의 마지막 요소를 삭제하고 요소를 반환합니다.
코드 사본은 다음과 같습니다.
var a = [ "aa", "bb", "cc"];
document.write (a.pop ()); //-> CC
document.write (a); //-> AA, 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); //-> AA, BB, CC, DD, 1,2,3
CONCAT와의 차이점은 CONCAT가 원래 배열에 영향을 미치지 않고 새 배열을 직접 반환하고 푸시는 원래 배열을 직접 수정하여 새로운 배열의 길이를 반환한다는 것입니다.
종류
배열 정렬, 먼저 예를 살펴 보겠습니다
코드 사본은 다음과 같습니다.
var a = [11,2,3,33445,5654,654, "ASD", "B"];
알림 (a.sort ()); //-> 11,2,3,33445,5654,654, ASD, b
결과가 매우 놀라운가요? 예, 정렬은 정수 크기를 기반으로하는 것이 아니라 문자열 비교에서 첫 번째 문자의 ANSI 코드를 비교하고 작은 코드가 앞에 있습니다. 동일하면 두 번째 문자가 비교됩니다. 정수 값에 따라 비교하려면이 작업을 수행 할 수 있습니다.
코드 사본은 다음과 같습니다.
var a = [11,2,3,33445,5654,654];
A.SORT (기능 (A, B) {
반환 a -b;
});
경고 (a); //-> 2,3,11,654,5654,33445
정렬 () 메소드에는 선택 사양 매개 변수가 있으며 코드의 함수입니다. 이것은 간단한 예입니다. 숫자를 정렬 할 수 없습니다. 숫자가 아닌 사람들은 더 많이 판단해야하므로 여기서는 이야기하지 않을 것입니다.
뒤집다
배열과 정렬 ()을 반비례하고 첫 번째 문자 ASCII 값을 가져 와서 비교하십시오.
코드 사본은 다음과 같습니다.
var a = [11,3,5,66,4];
경고 (a.reverse ()); //-> 4,66,5,3,11
배열에 배열이 포함 된 경우 요소가 객체로 처리 된 경우 요소가 해결되지 않습니다.
코드 사본은 다음과 같습니다.
var a = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', [4,11,33]];
경고 (a.reverse ()); //-> 4,11,33, g, f, e, d, c, b, a
경고 (a.join ( " *")); //-> 4,11,33 * g * f * e * d * c * b * a
4, 11, 33은 완전한 객체 비교로 간주되므로 첫 번째 순위가 매겨지기 때문에 마지막 11이어야합니다.
이해할 수 없다면 join ()을 사용하여 함께 묶으면 훨씬 더 분명합니다.
옮기다
배열의 첫 번째 요소를 삭제하고 팝과 유사한 요소를 반환합니다.
코드 사본은 다음과 같습니다.
var a = [ "aa", "bb", "cc"];
document.write (a.shift ()); //-> AA
document.write (a); //-> BB, CC
참고 : 배열이 비어 있으면 정의되지 않은 것이 반환됩니다.
변속되지 않은
변속과 달리 배열의 전면에 요소를 추가하고 배열의 새로운 길이를 반환하십시오.
코드 사본은 다음과 같습니다.
var a = [ "aa", "bb", "cc"];
document.write (a.unshift (11)); //-> 4 참고 : undefined가 IE에서 반환됩니다
document.write (a); //-> 11, AA, BB, CC
document.write (a.unshift ([11,22])); //-> 5
document.write (a); //-> 11,22,11, AA, BB, CC
document.write (a.unshift ( "cat")); //-> 6
document.write (a); //-> CAT, 11,22,11, AA, BB, CC
이 방법에주의를 기울이면, 정의되지 않은 것은 IE에서 반환되며, 이는 Microsoft의 버그 인 것 같습니다. Firefox에서 배열의 새로운 길이를 올바르게 재생할 수 있습니다.
일부분
배열 조각을 반환합니다
코드 사본은 다음과 같습니다.
var a = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g'];
경고 (A.Slice (1,2)); //-> b
경고 (a.slice (2)); //-> C, D, E, F, G.
경고 (a.slice (-4)); // -> d, e, f, g
경고 (a.slice (-2, -6)); //-> 비어 있습니다
a.slice (1,2)는 첨자에서 시작하여 1에서 첨자로 시작하여 첨자가있는 요소는 포함되지 않습니다.
매개 변수가 하나만 있으면 기본값은 배열 끝입니다.
-4는 네 번째 마지막 요소를 나타내므로 카운트 다운의 네 가지 요소가 반환됩니다.
마지막 줄은 두 번째로 시작됩니다. 나중에 인터셉트되므로 이전 요소를 검색하는 것은 불가능하므로 빈 배열을 반환합니다. 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,9
document.write (a.splice (4)); //-> 7,8,9 참고 : IE에서 비어 있습니다
document.write (a); //-> 1,2,3,6
document.write (a.splice (0,1)); //-> 1
document.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 ( "#"); //-> ee#7
document.write (a); //-> 2, CC, AA, TT, 8,9
이 방법은 IE에 있습니다. 두 번째 매개 변수가 필요합니다. 채워지지 않으면 기본값 0으로 기본값이됩니다. 예를 들어 A.splice (4), 즉 비어 있으면 비워집니다. 효과는 A.Splice (4,0)와 같습니다.
토스트 링
배열을 배열뿐만 아니라 문자열로 변환하지만 모든 객체는이 방법을 사용할 수 있습니다.
코드 사본은 다음과 같습니다.
var a = [5,6,7,8,9, [ "A", "BB"], 100];
document.write (a.tostring ()); //-> 5,6,7,8,9, A, BB, 100
var b = 새로운 날짜 ()
document.write (b.toString ()); //-> 토요일 8 월 8 일 17:08:32 UTC+0800 2009
var c = 함수 (s) {
경고 (들);
}
document.write (c.tostring ()); //-> 함수 (s) {alert (s); }
부울 값은 true 또는 false를 반환하고 객체 객체 객체 이름]]
join () 메소드와 비교하여 join ()은 1 차원 배열 만 대체하는 반면, ToString ()은 전체 배열을 완전히 평면화합니다 (1 차원 또는 다차원에 관계없이).
동시에이 방법은 소수, 바이너리, ENGTH 및 16 진전 변환에 사용될 수 있습니다.
코드 사본은 다음과 같습니다.
var a = [5,6,7,8,9, "A", "BB", 100];
for (var i = 0; i <a.length; i ++) {
document.write (a [i] .toString () + "binary is" + a [i] .ToString (2) + ", Octal은" + a [i] .ToString (8) + ", 16 진수는" + a [i] .ToString (16)); //-> 4,5
}
출력 결과 :
코드 사본은 다음과 같습니다.
5의 이진은 101, 옥탈은 5, 16 진수는 5입니다.
6의 이진은 110, 옥탈은 6, 16 진수는 6입니다.
7의 이진은 111, 옥탈은 7이고 16 진수는 7입니다.
8의 이진은 1000, 옥탈은 10, 16 진수는 8입니다.
9의 이진은 1001, 옥탈은 11이고, 16 진수는 9입니다.
a의 이진은 a이고, 옥탈은 A이고, 16 진수는
BB의 이진은 BB이고, 옥탈은 BB이고, 16 진수는 BB입니다.
100의 이진은 1100100이고, 10 대는 144이고, 16 진수는 64입니다.
변환은 요소에서만 수행 될 수 있습니다. 전체 배열이 변환되면 배열은 그대로 반환됩니다.
Tolocalestring
주로 날짜 개체에서 사용되는 로컬 형식 문자열을 반환합니다.
코드 사본은 다음과 같습니다.
var a = 새 날짜 ();
document.write (a.tostring ()); //-> 토요일 8 월 8 일 17:28:36 UTC+0800 2009
document.write (a.tolocalestring ()); //-> 2009 년 8 월 8 일 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 = 새 날짜 ();
var c = true;
var d = function () {
경고 ( "sunnycat");
};
document.write (a.valueof ()); //-> 1,2,3,4,5,6,7,8,9
document.write (typeof (a.valueof ()); //-> 객체
document.write (b.valueof ()); //-> 1249874470052
document.write (typeof (b.valueof ())); //-> 번호
document.write (c.valueof ()); //-> 참
document.write (typeof (c.valueof ()); //-> 부울
document.write (d.valueof ()); //-> function () {alert ( "sunnycat"); }
document.write (typeof (d.valueof ())); //-> 함수
배열은 객체이기 때문에 typeof (a.valueof ())는 객체를 반환하고 반환 된 다차원 배열은 여전히 있습니다.
코드 사본은 다음과 같습니다.
var a = [1,2,3, [4,5,6, [7,8,9]];
var aa = a.valueof ();
document.write (aa [3] [3] [1]); //-> 8
날짜 객체는 1970 년 1 월 1 일부터 밀리 초 수를 반환하고 수학 및 오류 객체에는 메소드의 가치가 없습니다.