JavaScript - Array對象,數組

來源:互聯網
上載者:User

標籤:串連   迴圈   建立   als   參數   sar   rip   shift   反轉   

1. 建立數組方式1. new關鍵字
var arr = new Array(1, 2, 3);
方式2. 使用字面量建立數組對象
var arr = [1, 2, 3];
2. 檢測一個對象是否是數組
  1. instanceof(運算子),[] instanceof Array
  2. Array.isArray(),HTML5方法,有相容性問題
3. 數組常用方法

具體查MDN

// 1 棧操作(先進後出)push()pop()       //取出數組中的最後一項,修改length屬性// 2 隊列操作(先進先出)push()shift()     //取出數組中的第一個元素,修改length屬性unshift()   //在數組最前面插入項,返回數組的長度// 3 排序方法reverse()   //翻轉數組sort();     //即使是數組sort也是根據字元,從小到大排序// 帶參數的sort是如何?的?// 4 操作方法concat()    //把參數拼接到當前數組slice()     //從當前數組中截取一個新的數組,不影響原來的數組,參數start從0開始,end從1開始splice()    //刪除或替換當前數組的某些項目,參數start, deleteCount, options(要替換的項目)// 5 位置方法indexOf()、lastIndexOf()   //如果沒找到返回-1// 6 迭代方法 不會修改原數組(可選)every()、filter()、forEach()、map()、some()// 7 方法將數組的所有元素串連到一個字串中。join()
4. 實現array.join方法

input:一個數組,例如var arr = [1, 2, 3, 4, 5]
output:1|2|3|4|5

Version 1:字串拼接法
function myJoin(array, seperator) {  seperator = seperator || ‘,‘;  array = array || [];  if (array.length == 0){    return ‘‘;  }  var str = array[0];  for (var i = 1; i < array.length; i++) {    str += seperator + array[i];  }  return str;}var array = [6, 3, 5, 6, 7, 8, 0];console.log(myJoin(array, ‘-‘));console.log(array.join(‘-‘))
5. 實現array.reverse方法

將一個字串數組的元素的順序進行反轉
input:["a", "b", "c", "d"]
output:[ "d","c","b","a"]

Version 1:第i個元素和第length-i-1個元素交換,for迴圈中i < 數組的一半即可
    function myReverse(arr) {        // 數組為空白即返回空數組        if (!arr || arr.length === 0) {            return [];        }        // 遍曆到數組長度的一般即可        for (var i = 0; i < arr.length / 2; i++) {            var tmp = arr[i];            arr[i] = arr[arr.length - i - 1];            arr[arr.length - i -1] = tmp;        }        return arr;    }    var array = [‘a‘, ‘b‘, ‘c‘, ‘d‘];    console.log(array);    console.log(myReverse(array));    console.log(array.reverse());
6. 清空數組
// 方式1 推薦 arr = [];// 方式2 arr.length = 0;// 方式3arr.splice(0, arr.length);
案例1. 工資的數組[1500, 1200, 2000, 2100, 1800],把工資超過2000的刪除

方式1:使用輔助數組,遍曆和if過濾。(缺點:不是原地操作)

var array =  [1500,1200,2000,2100,1800];var tmpArray = [];for (var i = 0; i < array.length; i++) {  if(array[i] < 2000) {    tmpArray.push(array[i]);  }}console.log(tmpArray);

方式2:使用filter高階函數(函數式編程)

var array =  [1500, 1200, 2000, 2100, 1800];array = array.filter(function (item, index) {  if (item < 2000) {    return true;  }  return false;});console.log(array);
案例2. ["c", "a", "z", "a", "x", "a"]找到數組中每一個a出現的位置

方式1. 用到array.indexOf方法,也是缺點

var array =  [‘c‘, ‘a‘, ‘z‘, ‘a‘, ‘x‘, ‘a‘];do {  var index = array.indexOf(‘a‘,index + 1);  if (index != -1){    console.log(index);  }} while (index > 0);
案例3. 去掉一個數組中重複的元素

方式1. 使用k-v容器,k儲存原數組中的元素,v儲存原數組中元素出現的次數;不管次數多少次,都儲存在新的數組一次。

        // 建立數組        var arr = [‘c‘, ‘a‘, ‘z‘, ‘a‘, ‘x‘, ‘a‘];        // 清除重複元素        function clear(array) {            // 1. 用key-value的容器儲存元素出現的次數            var tmpDict = [];            // var tmpDict = {};            for (var i = 0; i < array.length; i++) {                var item = array[i];                if (tmpDict[item]) {                    tmpDict[item]++;                } else {                    tmpDict[item] = 1;                }            }            // 2. 儲存在一個新的數組中。容器中出現次數大於1和等於1的元素都只添加一次到新的數組中。            var tmpArray = [];            for (var key in tmpDict) {                if (tmpDict[key] == 1) {                    tmpArray.push(key);                } else {                    // 如果新的數組中沒有原本數組的元素,則添加                    if (tmpArray.indexOf(key) == -1) {                        tmpArray.push(key);                    }                }            }            return tmpArray;        }        // 測試        console.log(clear(arr));

JavaScript - Array對象,數組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.