Arrayオブジェクト
前にすでに定義配列(配列)と基本的な操作を知っています。配列の基本的な操作。
のは、より多くの方法を学びましょう。
オブジェクトが配列であるかどうかを検出します
instanceofを//変数は、オブジェクトのインスタンスであるかどう
Array.isArray(変数名/パラメータ)HTML5で提供される方法//、互換性の問題があります
注:instanceofの使用法
コンストラクタinstanceofは変数名
instanceofの配列は、同一の使用を他のオブジェクトを検出するために使用されてもよく、限定されるものではありません。
出力配列
toString()は、それぞれカンマで区切られた文字列に配列を//
のvalueOf()オブジェクト自体の配列を返す//
一般的な方法
図1に示すように、スタック操作(最終)
プッシュ()はアレイの端部に一つ以上の要素を追加して、配列の新しい長さを返す//。
ポップ()配列内の最後の項目を削除し、要素の値を返し、lengthプロパティを変更//
図2に示すように、操作キュー(FIFO)
プッシュ()//配列の端部に一つ以上の要素を追加して、配列の長さを返し
シフト()//配列の最初の要素を取り、lengthプロパティ変更
抜き()//プリペンドアレイ項目返される配列の長さ
3、ソート方法
()//反転アレイ逆
文字列へ変換素子時ソート()//デフォルトのソート順を、その後、値シーケンスを構築UTF-16コード単位にそれらを比較します
図4に示すように、操作方法
CONCAT(パラメータ)現在のアレイにスプライスされたパラメータ//
スライスは(開始、終了)//新しい配列を取ら現在の配列を、(端部を含むない、開始を含む)元の配列には影響を与えません。
スプライス()//削除または交換in situで既存の要素または配列を変更するための新たな要素を追加し、アレイに変更する内容を返します。この方法は、元の配列を変化させます。
図5に示すように、位置特定方法
IndexOfメソッド()は、配列内の特定の要素を見つけるために、最初のインデックスを返し、そうでない場合には-1を返す//。
lastIndexOf()現在または-1でない場合は、最後の配列で指定された要素のインデックスを返します//。配列の後ろから前方を探します、
図6に示すように、反復法(この方法は、HTML5で元の配列を変更しません)
すべての()//アレイテストのすべての要素は、指定された機能は、試験に合格できるかどうか。これは、ブール値を返します。(あなたは空の配列を受け取った場合、このメソッドは、すべての状況で返されます true
。)
フィルター()//オファーの機能をテストすることによって達成するためにすべての要素を含む新しい配列を作成します。
forEachの提供実行するための配列の各要素のための()//関数
マップ()//新しい配列を作成し、結果を提供する機能を呼び出すために、アレイ内の各要素の結果の後に戻されます。
いくつかの()//の少なくとも1つの要素の機能がある場合、試験方法によって提供することができます。このメソッドは、ブール値を返します。
図7に示すように、文字列メソッドに接続されています。
(パラメータ)を参加パラメータがない場合//配列のすべての要素は、パラメータストリングに接続され、コンマ接続
図8に示すように、空のメソッドの配列
ARR = []; //推奨
arr.length = 0;
arr.splice(0、arr.length)。
ケース:
分割形| 1は、出力文字列の配列です。'| B | C | D' として。達成するには、2つの方法があります。
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);