JavaScript筆記4-數組

来源:http://www.cnblogs.com/huguangqin/archive/2017/07/19/7208712.html
-Advertisement-
Play Games

一.概述:1.數組是無類型的:同一數組的各元素可以是任意類型,也可以是數組或對象;2.索引從0開始,最大到2^32-2=4294967294;最多容納4294967295個元素;3.數組是動態的,根據需要自動增減;創建數組時無需聲明大小,且在大小變化時無需重新分配空間;4.數組可以是索引連續的(非稀... ...


一.概述:
1.數組是無類型的:同一數組的各元素可以是任意類型,也可以是數組或對象;
2.索引從0開始,最大到2^32-2=4294967294;最多容納4294967295個元素;
3.數組是動態的,根據需要自動增減;創建數組時無需聲明大小,且在大小變化時無需重新分配空間;
4.數組可以是索引連續的(非稀疏數組),也可以是不連續的(稀疏數組),對於稀疏數組來說,length比所有元素的索引要大;
5.通常數組的實現是經過優化的,用數字索引來訪問對象比訪問常規對象屬性要快的多.

二.創建數組
1.var empty = []; //名為empty的空數組
2.var primes = [1,2,3,4]; //4個元素的數組
3.var misc = [1.1, true, "a",];//包含3個類型和逗號的數組
4.
var base = 1;
var table = [base, base+1, base+2, base+3];//可以包含表達式
5.var b = [[1,{x:1,y:2}],[2,{x:3,y:4}]];//包含對象直接量或其它數組直接量
6.var count = [1, ,3];//第2個元素為undefined
7.var defs = [ , , ];//數組含2個元素,都是undefined,數組直接量的語法允許有可選的結尾的逗號,所以該數組只有2個元素;
8.var a = new Array();//調用Array()函數,無參,相當於創建空數組;
9.var a = new Array(10);//調用Array()函數,創建長度為10的函數;
10.var a = new Array(5,4,3,"testing, testing");//參數即為新數組的元素,即有4個元素,3個整型+1個字元串;

三.數組元素的添加/刪除
1.為新索引賦值,即可添加,如a[2]=2;
2.push()方法在數組末尾添加,如a.push(2),該方式與a[a.length]一致
3.unshift()方法在數組首部添加,其它元素依次後移
4.delete刪除數組元素,刪除時數組長度不變,該位置不再有元素,非稀疏數組變成稀疏數組
如:a = [1,2,3]
delete a[1];
刪除索引為1的元素之後,a.length=3; console.log(a[1])會返回undefined;該數組變為稀疏數組

四.數組遍歷
1.常規for迴圈
var a =[1,2,3, null, ,];
delete a[1];
var len = a.length;
console.log(len);//5
for(var i = 0; i<a.length; i++){
     //跳過null/undefined以及不存在的元素
     // if(!a[i])
     //     continue;
     //console.log(a[i]);//1 3
     //跳過undefined和不存在的元素
     // if(a[i]===undefined)
     //     continue;
     //console.log(a[i]);//1 3 null
     //跳過不存在的元素
     if(!(i in a))
         continue;
     console.log(a[i]);//1 3 null
}
2.forEach
求以下數組各元素的平方和
     var a =[1,2,3, null, ,];
     delete a[1];
     var sq=0;
     a.forEach(function(x){
         sq += x*x;
     });
     console.log(sq);//1+9=10

五.多維數組
javaScript不支持真正的多維數組,可以用數組的數組來近似;
舉例:模擬9*9乘法表
var table = new Array(10);
for(var i =0; i<table.length; i++){
     table[i] = new Array[10];
}
for(var row = 0; row < table.length; row++){
     for(var col=0;col<table[row].length;col++){
         table[row][col]=rol*col;
     }
}
console.log(table[5][7]);//35

六.數組方法
1.join():將數組元素拼接成一個字元串;返回最終形成的字元串,是String.split()的逆操作;數組沒有split()方法.
2.reverse():將數組顛倒順序,返回逆序數組.註意是修改原數組,而不是生成新數且;
3.sort():返回排序後的數組;
     1.不帶參數時,以字母表順序排序(如有必要將臨時轉為字元串比較);
     2.若包含undefined函數,會被排到數組的尾部;
     3.若自定義規則,需傳入函數;假設第一個參數在前,應該返回一個小於0的數;
     舉例1:
     var a = [33,4,1111,222];
     // a.sort();
     // console.log(a);//字母表順序[1111, 222, 33, 4]
     // a.sort(function(x,y){
     //     return x-y;
     // });
     // console.log(a);//[4, 33, 222, 1111]
     a.sort(function(x,y){
         return y-x;
     })
     console.log(a);//[1111, 222, 33, 4]
    
     舉例2:
     var b =['ant','Bug','cat','Dog'];
     b.sort(function(x,y){
         var a = x.toLowerCase();
         var b = y.toLowerCase();
         if(a>b){
             return 1;
         }else if(a<b){
             return -1;
         }else{
             return 0;
         }
     })
     console.log(b);//["ant", "Bug", "cat", "Dog"]
4.concat():返回一個由原數組和該方法的參數組成的新數組;
     註意:1.參數若為數組,則連接數組中的元素,而非數組本身;
         2.不會遞歸扁平化數組的數組;
         3.不會修改調用的數組;
     舉例:
     var a = [1,2,3];
     console.log(a.concat(4,5));//[1, 2, 3, 4, 5]
     console.log(a.concat([4,5]));//[1, 2, 3, 4, 5]
     console.log(a.concat([4,5],[6,7]));//[1, 2, 3, 4, 5, 6, 7]
     console.log(a.concat([4,5],[6,[7,8]]));//[1, 2, 3, 4, 5, 6, Array(2)]
5.splice():插入或刪除元素的通用方法;根據參數不同有如下幾種情況:
     1.只有一個參數:刪除從這個參數開始(含)直到結尾的元素,並返回由刪除元素組成的數組;
     如:var a = [1,2,3,4,5,6,7,8];
     console.log(a.splice(4));//[5,6,7,8]
     2.兩個參數:第一個參數為起始位置,第二個參數為刪除元素個數(長度),返回由刪除元素組成的數組;
     如:var a = [1,2,3,4,5,6,7,8];
     console.log(a.splice(2,2));//[3,4]
     3.傳入三個及以上參數:執行先刪除,再插入功能.第一個參數指定開始刪除及插入的位置,第二個參數為刪除的長度,第三個及以後的參數作為數組元素插入;
     如:var a = [1,2,3,4,5,6,7,8];
     console.log(a.splice(2,3,[2,3],4));//[3, 4, 5]
     console.log(a);//[1, 2, Array(2), 4, 6, 7, 8]
     console.log(a.length);//7

6.push():在數組的尾部添加一個或多個元素(作為棧來使用),並返回新的數組長度;
pop():刪除數組的最後一個元素,減少數組的長度(delete不會減少數組長度),並返回刪除的值;該方法無參數,調用一次只刪除一個元素;
註:兩個方法都是修改並替換原有數組,而非生成新的數組
舉例:
var a = [];
console.log(a.push(1,2,3));//返回數組長度3
console.log(a.pop());//返回刪除的值3
console.log(a.pop());//2
console.log(a.length);//1

7.unshift():從數組頭部添加元素;參數作為數組元素添加;
shifte():從數組頭部刪除一個元素,無參數;
舉例:
var a = [9];
console.log(a.unshift(1,2,3));//在數組頭部添加元素並返回數組長度4
console.log(a);//[1, 2, 3, 9]證明在頭部添加
console.log(a.shift());//返回刪除的元素1(從頭部開始刪除)

8.toString():將數組的每個元素轉化為字元串並輸出以逗號分隔的字元串列表;
toLocalString():使用本地化(和自定義實現的)分隔符將這些字元串連接成最終的字元串;
舉例:
console.log([1,2].toString());//1,2
console.log([1,2].toLocaleString());//1,2


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

-Advertisement-
Play Games
更多相關文章
  • 非同步和多線程並不是一個同等關係,非同步是最終目的,多線程只是我們實現非同步的一種手段。非同步是當一個調用請求發送給被調用者,而調用者不用等待其結果的返回而可以做其它的事情。實現非同步可以採用多線程技術或則交給另外的進程來處理。 ...
  • 實現隨機驗證碼 ...
  • SSO英文全稱Single Sign On,單點登錄。SSO是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登錄映射到其他應用中用於同一個用戶的登錄的機制。它是目前比較流行的企業業務整合的解決方案之一。 ...
  • 最近幾年,函數式編程變得越來越流程,其代碼簡潔、副作用小、維護成本低等特點,使得許多其它的語言也開始支持函數式編程,比如`Java` 和 `C#`等。本文主要介紹一下函數式編程中的一個重要概念:`Monad`。 ...
  • 1 概述 1 概述 本篇文章主要分享演算法部分——遞歸演算法,本文簡要講解幾個經典的遞歸算個發,即乘法階乘、漢諾塔和斐波那契數列。 2 講解部分 2 講解部分 2.1 乘法階乘 問題:求n! 分析: 0!=1; n!=nx(n-1)! code: 2.2 漢諾塔 問題:有三根桿子A,B,C。A桿上有N個 ...
  • 使用命名空間對時間進行管理,代碼如下: 優勢: 刪除事件時只需要指定命名空間即可,刪除plugin空間的事件只需要一行代碼即可,由於click事件不在plugin的空間內,所以click事件仍然有效。 ...
  • 初始化環境 npm init -y 初始化項目 安裝各種依賴項 npm install --save vue 安裝vue2.0 npm install --save-dev webpack@^2.1.0-beta.25 webpack-dev-server@^2.1.0-beta.9 安裝webpa ...
  • 一、手風琴菜單效果圖及代碼如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>手風琴效果製作</title> 6 <link rel="stylesheet" href="../css ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...