>  기사  >  웹 프론트엔드  >  JavaScript 배열 및 공통 기능에 대한 자세한 설명_기본 지식

JavaScript 배열 및 공통 기능에 대한 자세한 설명_기본 지식

WBOY
WBOY원래의
2016-05-16 16:49:021068검색

1. 배열 알아보기

배열은 특정 유형의 데이터 모음입니다. 데이터 유형은 정수, 문자열 또는 객체일 수 있습니다.
Javascript는 다차원 배열을 지원하지 않지만 배열은 객체를 포함할 수 있기 때문에(배열도 객체임) 배열은 서로 중첩되어 다차원 배열과 유사한 기능을 달성할 수 있습니다.

1.1 배열 정의

10개의 요소가 있는 배열 선언:

코드 복사 코드는 다음과 같습니다.
var a = new Array(10);

이때, 10개의 요소를 포함하는 a에 대한 메모리 공간이 열렸습니다. a[2]와 같이 배열 이름과 [하첨자]를 사용하여 호출합니다. 그러나 현재 요소는 초기화되지 않았습니다. 호출은 정의되지 않은 상태를 반환합니다.
다음 코드는 변수 배열을 정의하고 값을 할당합니다.
코드 복사 코드는 다음과 같습니다.

var a = new Array();
a [0] = 10;
a[1] = "aaa";
a[2] = 12.6;

위에서 언급했듯이 객체는 배열에 배치될 수 있습니다. 예를 들어 다음 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다. 다음과 같습니다:

var a = new Array();
a[0] = true;
a[1] = document.getElementById("text");
a[2] = { x:11, y:22};
a[3] = 새 배열();

인스턴스화 시 배열에 직접 값을 할당할 수도 있습니다. 예:

코드 복사 코드는 다음과 같습니다.

var a = new Array(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)을 사용하여 var a = new Array(10,3)을 사용하면 됩니다. , 오류가 보고됩니다
그러나 앞에서 언급한 것처럼 배열에는 객체가 포함될 수 있으므로 배열의 요소를 배열로 선언할 수 있습니다. 예를 들면 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

var a = new Array();
a [0] = new Array();
a[0][0] = 1;
alert(a[0][0]) //팝업 1


코드 복사 코드는 다음과 같습니다.

var a = new Array([1, 2,3], [4,5,6],[7,8,9]);
var b = [[1,2,3], [4,5,6] , [7,8, 9]];

효과는 동일합니다. a는 일반 인스턴스화를 사용하고 b는 암시적 선언이며 결과는 다차원 배열입니다.

1.3 배열 리터럴

이걸 중국어로 뭐라고 부르는지 정말 모르겠어요, 텍스트 배열?
배열 얘기가 나와서 말인데, 배열 리터럴에 대해 이야기해야 합니다. 배열은 실제로 특별한 개체입니다. 개체에는 고유한 속성과 메서드가 있습니다. 값과 호출은 개체 이름.property, object.method()를 통해 얻어집니다. 다음 Mark를 통해 값을 얻습니다. 배열 리터럴은 여러 면에서 배열과 유사합니다. 둘 다 특정 데이터 유형의 컬렉션입니다. 그러나 배열 리터럴은 기본적으로 배열과 다릅니다. >

코드 복사 코드는 다음과 같습니다.
var aa = new Object();
aa .x = "cat";
aa.y = "sunny";
alert(aa.x) //고양이 팝업

간단한 객체를 생성합니다. 일반적으로 호출은 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; ialert(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,9
document.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())는 여전히 다차원 배열인 객체를 반환합니다


코드 복사

코드는 다음과 같습니다.var a = [1,2,3 ,[4 ,5,6,[7,8,9]]];var aa = a.valueOf();document.write(aa[3][3][1]) / / -> 8

Date 개체는 1970년 1월 1일 이후의 밀리초 수를 반환합니다. Math 및 Error 개체에는 valueOf 메서드가 없습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.