1. 색인 및 LastIndexof 방법 :
IE7은 배열 객체에서 indexof를 사용하여 오류를보고하므로 호환성을 다시 작성해야합니다.
코드 사본은 다음과 같습니다.
Array.prototype.lastIndexof (항목, 색인) {
var n = this.length, i = (index == null || index> n-1)? n-1 : index;
if (i <0) i = n+i;
for (; i> = 0; i-)
if (this [i] === item) // consolidar judgce, indexof, lastindexof
반환 i;
반품 -1;
}
2. Shuffle 방법 : 배열 셔플.
코드 사본은 다음과 같습니다.
함수 셔플 (대상) {
var i = target.length, j, temp;
for (; i> 0; j = parseint (math.random () * i), x = target [-i], target [i] = target [j], target [j] = x) {}
// 길이 = 10을 가정 한 다음 Math.random ()*10-> [0,10), parseint, [0,9] 후 무작위로 하나를 선택하고 배열의 마지막 항목과 교환하십시오. 두 번째 루프 인 [0,8]는 배열의 두 번째 용어와 교환합니다.
반환 대상;
}
3. 배열의 평평한 과정 : 평평하게, 1 차원 배열을 반환합니다.
코드 사본은 다음과 같습니다.
기능 평평한 기능 (arr) {
var result = [];
arr.foreach (function (item) {
if (array.isArray (항목)) result.concat (flatten (item));
else result.push (항목);
});
반환 결과;
}
4. 고유 한 방법 : 배열의 중복 제거 작업
이 방법은 여러 구현 방법이 있고 가장 일반적인 방법은 루프의 두 가지 방법입니다. 내가 아는 가장 일반적인 것은 객체 A를 사용한 다음 루프 배열 ARR을 사용하는 것입니다. ([ARR [i]]가 존재하는 경우 매번, 존재하지 않으면 새로 정의 된 배열 결과로 밀려납니다. 존재는 입증되고 반복되므로 결과를 밀어 낼 필요가 없습니다. "123", 123 의이 솔루션은 동일하게 간주됩니다. 실제로 하나는 문자열이고 다른 하나는 숫자이며, 동일하게 간주해서는 안됩니다.
따라서 다음 방법이 나타납니다 : [1, "1", "1"]]
코드 사본은 다음과 같습니다.
if ((typeof obj [array [i]]! = (typeof array [i]) || obj [array [i]]! = array [i]) {
A.push (배열 [i]);
obj [배열 [i]] = 배열 [i];
}
// 먼저 유형이 동일한 지 결정합니다. 그들이 동일하다면, 그들의 값이 동일한지 결정하십시오. 그들이 같지 않으면 구원받을 것입니다. 그들이 평등하다면, 그들은이 가치가 이전에 존재했음을 증명할 것입니다.
유형이 다르면 여기에는 두 가지 상황이 있습니다.
첫 번째 경우, OBJ는 예를 들어 OBJ [123] = 123, 이제 배열 [i] = "123"과 같이 이미이 데이터를 저장했습니다. 현재 OBJ 유형 [Array [i]])는 숫자이고, 배열 유형 [i]는 스트링이므로 배열에 저장됩니다.
두 번째 사례는 OBJ가 예를 들어이 데이터를 아직 저장하지 않았다는 것입니다. 현재 OBJ 유형 [Array [i]])는 undefined = undefined의 타입이며, 배열 유형 [i]과 같지 않으며 배열에 저장됩니다.
이 방법은 문자열과 숫자가 동일한 상황을 해결할 수 있지만 객체가 동일한 상황을 해결할 수는 없습니다. 예를 들면 : a = {1 : 2}, b = {2 : 1};
첫 번째 루프 일 때 OBJ 타입 [a] = 정의되지 않은 타입, a = 객체를 입력하십시오. 입금 obj [a] = a. 실제로, obj [object] = a;
두 번째 루프에서 OBJ 유형 [B]은 OBJ [Object]의 타입과 동일하며, 실제로 A = Object, B = Object의 타입입니다. 따라서 OBJ [array [i]]! = array [i] |, 즉, obj [b]-> obj [object]-> a로 들어갑니다! = b, 너무 퇴적
obj [b] = b; 즉, obj [object] = b; 이전 obj [object] = a를 덮어 씁니다.
이 경우 모든 객체가 나타나고 마지막 객체 값 만 저장됩니다.
객체를 고려할 때 다음 방법을 사용합니다.
코드 사본은 다음과 같습니다.
for (var i = 0; i <temp.length; i ++) {
for (var j = i+1; j <temp.length; j ++) {
if (temp [i] === temp [j]) {
temp.splice (j, 1);
J--;
}
}
}
반환 온도;
5. 배열 정렬 : 정렬 메소드. 정렬하려는 객체가 객체 인 경우 비교 (a, b) {if (a.age> b.age) return 1; else -1;}, a.sort (비교)를 쓸 수 있습니다.
6. 배열의 최소값을 반환합니다 : return math.min.apply (0, array);
7. UNSHIFT는 IE6,7에서 배열 길이를 반환하지 않습니다.
코드 사본은 다음과 같습니다.
([]. unshift (1)! == 1) // 이전 항목에서 빈 배열에 항목을 추가하면 다른 브라우저는 1을 반환하고 IE6과 7은 배열 길이를 반환하지 않습니다. if 문을 실행하십시오
{
var _unshift = array.prototype.unshift; // 기능 하이재킹.
Array.prototype.unshift = function () {
_unshift.Apply (this, Arguments);
이것을 반환합니다. 길이;
}
}
8. SSPLICE 하나의 매개 변수의 경우 IE8의 기본 두 번째 매개 변수 및 다음 버전은 0이고 다른 브라우저는 배열 길이입니다.
코드 사본은 다음과 같습니다.
if ([1,2,3] .splice (1) .length == 0) // IE8이고 다음 버전은 0이고 다른 버전은 3과 같으며 IF를 입력하십시오.
{
var _splice = array.prototype.splice;
Array.prototype.splice = function (a) {
if (arguments.length == 1) // 매개 변수가 하나만있는 경우
{
return _splice.call (this, a, this.length);
}또 다른{
반환 _splice.apply (this, arguments);
}
}
}
이 방법은 배열 옵션을 변경하므로 배열의 푸시, 팝, 시프트 및 변속되지 않음 (이 방법은 배열 옵션도 수정) 이이 메소드를 호출하여이를 구현합니다.
주목할 곳이 있습니다.
코드 사본은 다음과 같습니다.
var color = new Array ( '빨간색', '파란색', '노란색', '검은 색');
var color2 = color.splice (2,0, 'brown', '핑크');
경고 (색); // 빨간색, 파란색, 갈색, 분홍색, 노란색, 검은 색, 노란색 옵션에서 작업을 시작하십시오. 삭제가 0이면 추가 옵션이 노란색 전에 삽입됩니다. 기억하다.
여기서는 스플 라이스와 슬라이스의 차이, 반환 값 및 원래 배열에 미치는 영향을 확인하십시오.
위는이 섹션의 내용의 단순화 된 버전입니다. 간소화되지만 핵심 사항은 모두 있습니다. 이 섹션을 읽을 때 모든 사람에게 도움이되기를 바랍니다.