Array類型

来源:http://www.cnblogs.com/xieshuang/archive/2016/04/10/5375776.html
-Advertisement-
Play Games

Array類型 也是 中常用類型之一,其特點是數組中的每一項都可以保存任何類型的數據,數組的大小可以動態調整。 創建數組 方式1:使用 構造函數 var books = new Array(); var books = new Array(20); //如果知道數組的大小,可以給構造函數傳遞該參數 ...


Array類型

  Array也是ECMAScript中常用類型之一,其特點是數組中的每一項都可以保存任何類型的數據,數組的大小可以動態調整。

創建數組


方式1:使用Array構造函數

var books = new Array();
var books = new Array(20); //如果知道數組的大小,可以給構造函數傳遞該參數
var books = new Array("English", "math"); //創建包含三個字元串的數組
var books = Array(); //new關鍵字可以省略

方法2:使用數組字面量表示法

var books = ["englisg", "math"]; 
var names = [];
var tasks = [,,,,]; //不推薦用法,會根據瀏覽器的不同,創建4或者5項的數組

設置和讀取數組

var colors = ["blue", "yellow", "red"];
alert(colors[0]); //使用方括弧並提供基於相應值的基於0的數字索引
colors[3] = "black"; //可以替換指定位置的值;如果索引超過了數組現有的項數,只超出一項,則數組的索引值自動加1;像本利中如果colors[4]="green",那colors[3]會被自動存入undefined

  length屬性

  length始終返回0或者更大的值,且它不是只讀的,通過該屬性可以從數組的末尾移除項或向數組中添加添加新項:

var books = ["English", "math"];
books.length = 1;
console.log(books[1]);  //undefined

var books = ["English", "math"];
books.length = 2;
console.log(books[2]);  //undefined

//數組的最後一項的索引始終是length-1,因此下一個新項目的位置就是length,用來添加項目非常方便
var books = ["English"];
books[books.lenth] = "math";

檢測數組

if(Array.isArray(value)) {
    //對數組執行某些操作
}

轉換方法

var books = ["English", "math"];
console.log(books.toString()); //English,math
console.log(books.valueOf());//["English", "math"]
console.log(books);//["English", "math"]

  數組繼承的toLocaleString()toString()valueOf()方法,在預設情況下都會以逗號分割的字元串的形式返回數組項。如果使用join()方法,則可以使用不同的分隔符來構建這個字元串。

//join()方法接收一個參數,即分隔符
var books = ["English", "math"];
console.log(books.join(",")); //English,math
console.log(books.join("||")); //English||math 

棧方法

  push()方法接收任意數量的參數,把它們逐個添加到數組的末尾,並返回修改後數組的長度

var books = new Array();
var count = books.push("English", "math");
console.log(count); //2
count = books.push("Chinese");
console.log(count); //3

  pop()方法則從數組末尾移除最後一項,減少數組的length值,然後返回移除的項

var item = books.pop();
console.log(item); //Chinese
console.log(books.length); //2

隊列方法

  shift()能夠移除數組中的第一個項並返回該項,同時數組長度減1

var books = new Array();
var count = books.push("English", "math");
console.log(count); //2
count = books.push("Chinese");
console.log(count); //3
var item = books.shift();
console.log(item); //English
console.log(books.length); //2

  unshift()能在數組前端添加任意個項並返回新數組的長度

var books = new Array();
var count = books.unshift("English", "math");
console.log(count); //2
count = books.unshift("black");
console.log(count); //3

var item = books.pop();
console.log(item); //math
console.log(books.length); //2

重排序方法

  reverse()翻轉數組項的順序

var num = [1, 4, 3, 5, 2];
num.reverse();
console.log(num); //[2, 5, 3, 4, 1]

  sort()按照升序排列數組項,該方法會調用每個數組項的toString()轉型方法,然後比較得到的字元串,然後這種方法並不是最佳的,即使數組中每一項都是數值,但是最後比較的都是字元串,因此sort()方法可以接受一個比較函數座位參數,方便指定哪個值位於哪個值的前面。

function compare(val1, val2) {
    if(val1 < val2){
        return 1;
    } else if(val1 > val2){
        return -1;
    } else {
        return 0;
    }
}

var num = [0, 1, 4, 10, 12];
num.sort(compare);
console.log(num); //[12, 10, 4, 1, 0]

操作方法

  concat()方法可以基於當前數組中的所有項創建一個新數組

var books = ["English", "math"];
//傳遞給concat()方法的是一或多個數組,則該方法會將這些數組中的每一項都添加到結果數組中
var books2 = books.concat("PE", ["Chinese", "Chemistry"]);
console.log(books); //["English", "math"]
console.log(books2); //["English", "math", "PE", "Chinese", "Chemistry"]

  slice()方法能夠基於當前數組中的一個或者多個項創建一個新數組

var books = ["English", "math", "Computer"];
var books2 = books.slice(1); //表示從1位置開始截取
var books3 = books.slice(1, 2); //表示從1位置開始截取,到位置2結束
console.log("books2"); // ["math", "Computer"]
console.log("books3"); // ["math"]

  splice()方法

  1. 刪除 指定兩個參數, 要刪除的第一項的位置和要刪除的項數
  2. 插入 指定三個參數,起始位置、0(要刪除的項數),要插入的項
  3. 替換 指定三個參數, 起始位置,要刪除的項數和要插入的任意數量的項

    //刪除第一項
    var books = ["English", "math", "Chinese"];
    var removed = books.splice(0, 1);
    console.log(books); //["math", "Chinese"]
    console.log(removed); // ["English"]

    //從位置1開始插入兩項
    removed = books.splice(1, 0, "PE", "Chemistry");
    console.log(books); // ["math", "PE", "Chemistry", "Chinese"]
    console.log(removed); // []

    //插入兩項,刪除一項
    removed = books.splice(1, 0, "English", "Biology");
    console.log(books); //["math", "English", "Biology", "PE", "Chemistry", "Chinese"]
    console.log(removed); // []

    位置方法


      indexOf()從數組的開頭(位置0)開始向後查找,返回要查找的項在數組中的位置,沒找到返回-1

      lastIndexOf()從數組的末尾開始向前查找

    var num = [1, 2, 4, 7];
    console.log(num.indexOf(2)); //1

    迭代方法


      一共5個迭代方法,每個方法都接收兩個參數:在每一項商譽性的函數和運行在該函數的作用域的對象--影響this的值。傳入這些方法中的函數會接收三個參數,數組項的值、該項在數組中的位置和數組對象本身

    //對數組中每一項都運行指定函數,如果這個函數對每一項的結果都是true,就返回true
    var num = [1, 2, 4, 5, 6];
    var everyResult = num.every(function(item, index, array){
    return(tiem >2 );
    })
    console.log(everyResult); //false

    //對數組中的每一項都運行指定函數,如果這個函數對任一項的結果返回true,就返回true
    var someResult = num.some(function(item, index, array){
    return (item >2);
    })
    console.log(someResult); //true

    //filter()方法,有了前面兩個例子,顧名思義該方法是對數組中的項用指定的函數來進行過濾,將過濾得到的項組成數組返回
    var num = [1, 2, 4];
    var filterResult = num.filter(function(item, index, array){
    return (item > 2);
    })
    console.log(filterResult); //[4]

    //map()方法也返回一個數組,是針對原有數組的每一項運行傳入函數的結果,所組成的新的數組
    var num = [1, 2, 3];
    var mapResult = num.map(function(item, index, Array){
    return item*2;
    })
    console.log(mapResult);//[2, 4, 6]

    //forEach()對數組中的每一項進行迭代,該方法沒有返回值
    var num = [1, 2, 3];
    num.forEach(function(item, index, Array){
    //執行操作
    })

    歸併方法


      reduce()reduceRight()


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 序言 在今天,JavaScript已經成為了網頁編輯的核心。尤其是過去的幾年,互聯網見證了在SPA開發、圖形處理、交互等方面大量JS庫的出現。 如果初次打交道,很多人會覺得js很簡單。確實,對於很多有經驗的工程師,或者甚至是初學者而言,實現基本的js功能幾乎毫無障礙。但是JS的真實功能卻比很多人想象 ...
  • 選擇器的優先順序關係到元素應用哪個樣式。在CSS2.1的規範(http://www.w3.org/TR/2009/CR-CSS2-20090908/cascade.html#specificity)中是這樣描述的: 如果聲明來自於“style”屬性,而不是帶有選擇器的規則,則記為 1,否則記為 0 ( ...
  • 摘要: 最近閑來無事就把以前做的cordova項目整理了下,發現網上很少有詳細完整的配置教程,所以自己就總結了下分享給大家。 項目地址:https://github.com/baixuexiyang/hybrid 環境搭建: 1.安裝node.js下載安裝node.js,https://nodejs ...
  • 雖然jquery的較新的api已經很好用了, 但是在實際工作還是有做二次封裝的必要,好處有:1,二次封裝後的API更加簡潔,更符合個人的使用習慣;2,可以對ajax操作做一些統一處理,比如追加隨機數或其它參數。同時在工作中,我們還會發現,有一些ajax請求的數據,對實時性要求不高,即使我們把第一次請... ...
  • 一、HTML 元素 HTML 元素以開始標簽起始 HTML 元素以結束標簽終止 元素的內容是開始標簽與結束標簽之間的內容 某些 HTML 元素具有空內容(empty content) 空元素在開始標簽中進行關閉(以開始標簽的結束而結束) 大多數 HTML 元素可擁有屬性 嵌套的 HTML 元素 HT ...
  • 我這裡說的提示框,就是當用戶將滑鼠移動到需要提示的圖標時,就會在這圖標的位置出現一個提示框了。 咦,那這有什麼好說的呢? 如果你來實現這一效果,你會怎麼做呢? 初步的做法嘛,就是利用PS製作一張提示框內容區域的png圖片和一張指向位置的箭頭png圖片,然後利用這張圖片作為提示背景,裡面輸入指定內容唄 ...
  • 一個禮拜沒動靜了,實在是懶惰。。 好了,不扯淡了,進入正題:框架封裝之選擇器模塊。 首先,我們為什麼要封裝框架? 淺顯的文字不具有良好的說服性,來做幾個題目吧: 求一個數組所有項之和 2. 求數組中最大值 3. 獲取數組中指定值 ok,題目做到這就行了,我們可以看出每道題目中都用到了for迴圈,每次 ...
  • 一、HTML 標題 HTML 標題(Heading)是通過<h1> - <h6> 標簽來定義的. 二、HTML 段落 HTML 段落是通過標簽 <p> 來定義的. 三、HTML 鏈接 HTML 鏈接是通過標簽 <a> 來定義的.在 href 屬性中指定鏈接的地址。 四、HTML 圖像 HTML 圖像 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...