자바 스크립트 Array 객체

Array 객체

  이미 전에 정의 배열 (배열) 및 기본 조작을 알고있다. 어레이의 기본 동작 .

  좀 더 방법을 알아 보자.

객체가 배열인지 검출

instanceof는 변수 // 객체의 인스턴스 있는지 
Array.isArray (변수 명 / 파라미터) // HTML5 제공 방법, 호환성 문제가 존재

  참고 : instanceof를 사용

생성자 instanceof를 변수 이름

  instanceof는 배열이 다른 목적, 동일한 사용을 검출하는데 사용될 수 있으며, 제한되지 않는다.

출력 배열

toString ()는 문자열로 배열 // 쉼표로 구분하여 각 

개체 자체의 배열을 리턴 // valueOf ()

일반적인 방법

  1 스택 오퍼레이션 (아웃 성)

푸시는 () 배열의 끝에 하나 개 이상의 요소를 추가하고 배열의 새 길이를 반환 //. 
팝 () 배열의 마지막 항목을 제거하고 요소의 값을 반환, 길이 속성을 수정 //

  2 작업 큐 (FIFO)

푸시 () 배열의 단부에 하나 개 이상의 요소를 추가하고, 어레이의 길이를 리턴 // 
시프트 () 어레이, 길이 속성 수정의 첫 번째 요소를 가지고 // 
취소] () // 앞에 추가 어레이 항목 반환 된 배열의 길이

  (3) 정렬 방법

// 반전 어레이 역방향 
문자열로 변환 소자시 // 기본 정렬 순서를 정렬 한 후 생성 값 시퀀스들에게 UTF-16 코드 단위 비교

  도 4에서, 동작 방법

CONCAT (매개 변수) 현재의 배열에 접합 매개 변수 // 
슬라이스 (시작, 끝) // 새로운 배열을 가지고 현재의 배열을, (말을 포함하지 않는, 시작 포함) 원래 배열에 영향을주지 않습니다
스플 라이스 ()를 제거하거나 또는 동일계 배열을 수정하는 새로운 요소를 추가 할 경우에 기존의 요소를 교체하고, 내용물이 배열 수정할 리턴 //. 이 방법은 원래의 배열을 변화시킨다.

  도 5에서, 위치 결정 방법

같이 IndexOf ()는 배열의 지정된 요소를 찾기 위해 최초의 인덱스를 반환하고, 그렇지 않은 경우 -1을 반환 //. 
lastIndexOf에서도 (있으면) 본 여부, 마지막 배열 내의 지정된 요소의 인덱스를 리턴 // -1. 배열의 뒤쪽에서 앞으로 찾기,

  6 반복적 방법 (방법 HTML5의 원의 배열을 변경하지 않음)

때때로 () // 배열 시험의 모든 요소는 소정의 기능 시험을 통과 할 수 있는지 여부. 그것은 부울 값을 반환합니다. (당신은 빈 배열을받은 경우,이 방법은 모든 상황에서 돌아갑니다  true.) 
) (필터 // 모든 요소가 제공하는 기능을 테스트하여 달성하기 위해 포함 된 새 배열을 만들 수 있습니다. 
제공된 수행 어레이의 각 요소에 대해 forEach () 함수 // 
새로운 배열을 생성 // 맵 (), 그 결과를 제공하는 함수를 호출하는 어레이의 각 요소의 결과 후에 반환된다. 
일부 () // 방법에 의해 적어도 하나 개의 요소의 기능이 제공 될 수있는 경우 시험. 이 방법은 부울 값을 반환합니다.

  도 7은 문자열 법에 접속되고

// 어레이의 모든 요소가있을 경우에는 파라미터, 콤마 접속, 파라미터 스트링에 접속되지 않는다 (파라미터) 조인

  도 8에있어서의 빈 어레이

도착 = []; // 추천 

arr.length = 0; 

arr.splice (0 arr.length);

 케이스 :

  분할 형태 | 1 출력 문자열 배열이다. 현재 "A | B | C | D '. 달성하는 방법은 두 가지가 있습니다.

 1 // 方式一
 2   var array = [a,b,c,d,e,f];
 3   console.log(array.join('|'));
 4 // 方式二
 5 function myJoin(array, seperator) {
 6   seperator = seperator || ',';
 7   array = array || [];
 8   if (array.length == 0){
 9     return '';
10   }
11   var str = array[0];
12   for (var i = 1; i < array.length; i++) {
13     str += seperator + array[i];
14   }
15   return str;
16 }
17 var array = [6, 3, 5, 6, 7, 8, 0];
18 console.log(myJoin(array, '-'));

 

  2、将一个字符串数组的元素的顺序进行翻转。使用两种方式。

 1 // 方式一
 2   var array = ['a','b','c','e','f'];
 3   console.log(array.reverse());
 4 // 方式二
 5 function myReverse(arr) {
 6   if (!arr || arr.length == 0) {
 7     return [];
 8   }
 9   for (var i = 0; i < arr.length / 2; i++) {
10     var tmp = arr[i];
11     arr[i] = arr[this.length - i - 1];
12     arr[arr.length - i - 1] = tmp;
13   }
14   return arr;
15 }
16 
17 var array = ['a', 'b', 'c'];
18 console.log(myReverse(array));

 

  3、工资的数组[1500, 1200, 2000, 2100, 1800],把工资超过2000的删除。

 1 // 方式一
 2 var array =  [1500,1200,2000,2100,1800];
 3 var tmpArray = [];
 4 for (var i = 0; i < array.length; i++) {
 5   if(array[i] < 2000) {
 6     tmpArray.push(array[i]);
 7   }
 8 }
 9 console.log(tmpArray);
10 // 方式二
11 var array =  [1500, 1200, 2000, 2100, 1800];
12 array = array.filter(function (item, index) {
13   if (item < 2000) {
14     return true;
15   }
16   return false;
17 });
18 console.log(array);

 

  4、["c", "a", "z", "a", "x", "a"]找到数组中每一个a出现的位置。

1 var array =  ['c', 'a', 'z', 'a', 'x', 'a'];
2 var  index = -1;
3 do {
4   index = array.indexOf('a',index + 1);
5   if (index !== -1){
6     console.log(index);
7   }
8 } while (index > 0);

 

  5、编写一个方法去掉一个数组的重复元素。

 1 function clear(arr) {
 2       // 1 如何获取数组中每一个元素出现的次数
 3       var o = {}; // 记录数组中元素出现的次数
 4       for (var i = 0; i < arr.length; i++) {
 5         var item = arr[i]; // 数组中的每一个元素
 6         // o[item] = 1;
 7         // 判断o对象是否有当前遍历到的属性
 8         if (o[item]) {
 9           // 如果o[item] 存在,说明次数不为1
10           o[item]++;
11         } else {
12           // 如果o[item] 不存在,说明是第一次出现
13           o[item] = 1;
14         }
15       }
16       // console.log(o);
17 
18       // 2 生成一个新的数组,存储不重复的元素
19       var newArray = [];
20       // 遍历对象o中的所有属性
21       for (var key in o) {
22         // 判断o对象中当前属性的值是否为 1  如果为1 说明不重复直接放到新数组中
23         if (o[key] === 1) {
24           newArray.push(key);
25         } else {
26           // o对象中当前属性 次数不为1 ,说明有重复的,如果有重复的话,只存储一次
27           // 判断当前的newArray数组中是否已经有该元素  
28           if (newArray.indexOf(key) === -1) {
29             newArray.push(key);
30           }
31         }
32       }
33       return newArray;
34     } 
35 
36     var array = ['c', 'a', 'z', 'a', 'x', 'a'];
37     var newArray = clear(array);
38     console.log(newArray);

  6、sort排序。

 1 var arr = [25, 10, 108, 18];
 2     // 默认情况下的sort是对字符编码 从小到大排序
 3 arr.sort();
 4 console.log(arr);
 5 
 6 // 除了默认排序外,还可以指定比较器
 7 function compare1(a, b) {
 8   return a - b;
 9 }
10 function compare2(a, b) {
11   return b - a;
12 }
13 arr.sort(compare1);
14 arr.sort(compart2);
15 
16 // 还可以直接指定比较器
17 arr.sort(function (a,b) {
18    return a - b; 
19 })

 

  7、模拟 sort 内部实现。

 1 // 对数组排序,从小到大  -- 冒泡排序
 2     function sort(array, fnCompare) {
 3       // 外层循环 控制趟数
 4       for (var i = 0; i < array.length - 1; i++) {
 5         // 假设排好序了
 6         var isSort = true;
 7         // 内层循环 控制比较的次数
 8         for (var j = 0; j < array.length - 1 - i; j++) {
 9 
10           if (fnCompare(array[j], array[j + 1]) > 0) {
11             isSort = false;
12             // 交换位置
13             var tmp = array[j];
14             array[j] = array[j + 1];
15             array[j + 1] = tmp;
16           }
17         }
18         // 判断是否排好了
19         if (isSort) {
20           break;
21         }
22       }
23     } 
24 
25     var arr = [56, 10, 1, 17];
26     
27 
28     sort(arr, function (a, b) {
29       return b - a;
30     })
31 
32     console.log(arr);

 

 

 

추천

출처www.cnblogs.com/niujifei/p/11367406.html