《數據結構與演算法javascript描述》筆記--數組篇

来源:http://www.cnblogs.com/LIUYANZUO/archive/2016/08/07/5745558.html
-Advertisement-
Play Games

數組的定義: JavaScript 中的數組是一種特殊的對象,用來表示偏移量的索引是該對象的屬性,索引可能是整數。然而,這些數字索引在內部被轉換為字元串類型,這是因為 JavaScript 對象中的屬性名必須是字元串。在內部被歸類為數組。由於 Array 在 JavaScript 中被當作對象,因此 ...


數組的定義

JavaScript 中的數組是一種特殊的對象,用來表示偏移量的索引是該對象的屬性,索引可能是整數。然而,這些數字索引在內部被轉換為字元串類型,這是因為 JavaScript 對象中的屬性名必須是字元串。在內部被歸類為數組。由於 Array JavaScript 中被當作對象,因此它有許多屬性和方法可以在編程時使用。

  

使用數組:

1.創建數組

① 使用 [] 操作符 ,var arr=[] ,該方法效率最高。

② 調用 Array 的構造函數創建數組,var myArr=new Arrery()

 

2.讀寫數組

 

3.由字元串生成數組,調用字元串對象的split()方法。

  

4.對數組的整體性操作:(這裡註意,曾經面試題出現)

淺複製:將數組a賦值給數組b,此時的數組b只是對數組a的引用,當數組a發生改變時,數組b也隨著發生改變。

var a=[];
for(var i=0;i< 5;i++){
    a[i]=i;
}

var b=a;
console.log(a[1]);
console.log(b[1]);//賦值引用前 1

a[1]=999;
console.log(a[1]);
console.log(b[1]);//賦值引用後 999

深複製:可以封裝一個copy()方法。

 

存取數組:

1.查找元素:indexOf() lastIndexOf()

 

2.數組的字元串表示:將數組轉化為字元串:join()  toString()

說到這裡的toString(),我想起了toString()  valueof() 的隱式調用。這裡很有意思,也略坑,不嚴謹的說下,當需要計算式,會隱式調用valueof()。當需要顯示數據或者結果時會調用toString()。有興趣的同學可以google一下。

 

3.由已有的數組創建新數組:

concat()方法合併已有的多個數組,創建新數組

splice()方法截取出一個數組的子集創建新數組

 

可變函數:

1.為數組增添元素:

push()方法將元素增添至末尾, unshift()將元素增添至開頭

 

2.從數組中刪除元素:

 pop() 方法可以刪除數組末尾的元素

 Shift() 方法可以刪除數組的第一個元素

 

3.從數組中間位置添加和刪除元素:splice()

 

4.數組排序:正序(字典順序)sort(),   倒序;reverse()

 

迭代器:

對數組的每個元素運用一個函數,可以返回一個值,一組值或一個新數組

  • 不生成新數組的迭代方法; forEach()  every()  some()  reduce()
  • 生成新數組的迭代方法;map() filter()

 

二維和多維數組:

1.創建二維數組

JavaScript 只支持一維數組,但是通過在數組裡保存數組元素的方式,可以創建多維數組。二維數組類似由行和列構成的數據表格。在 JavaScript 中創建二維數組,先創建一個數組,然後讓數組的每個元素也是一個數組。

這裡 通過擴展數組對象增加一個新方法,該方法設定數組的行數、列數和初始值。下麵是這個方法的定義(引用JavaScript: The Good PartsOReilly)一書的一段代碼):

Array.matrix = function (numrows, numcols, initial) {
    var arr = [];
    for (var i = 0; i < numrows; ++i) {
        var columns = [];
        for (var j = 0; j < numcols; ++j) {
            columns[j] = initial;
        }
        arr[i] = columns;
    }

 

2.處理方式i:使用嵌入式的for迴圈

 

對象數組:

數組除了包含基本數據類型元素(數字,字元串)還包含對象,數組的方法和屬性對對象依然適用。在對象中,可以使用數組存儲複雜的數據。

 

 

註意:本篇是我翻閱《數據結構與演算法javascript描述》的所寫大綱內容的過程筆記,需要深入學習的同學,還需看原書。初學者可以以此作為學習的大綱。至於好厲害的人,忽略本文,當然可以提建議,我定當修改。

本系列文章會持續更新。


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

-Advertisement-
Play Games
更多相關文章
  • 前言:以前總說自己玩mvc,但是對mvc的認識還是不夠透徹,也沒有好好看微軟自帶的mvc項目中的精妙,最近閑了下來,好好看了看。 通過上圖,我們可以清晰地瞭解到MVC 5應用程式的項目結構,接下來我們來依次解釋下他們各自的應用。 App_Data: 該文件夾主要是包含應用程式的本地存儲, 它通常以文 ...
  • 在hibernate中我們知道如果要從資料庫中得到一個對象,通常有兩種方式,一種是通過session.get()方法,另一種就是通過session.load()方法,然後其實這兩種方法在獲得一個實體對象時是有區別的,在查詢性能上兩者是不同的。 一.load載入方式 當使用load方法來得到一個對象時 ...
  • 持久化(Persistence) 即把數據(如記憶體中的對象)保存到可永久保存的存儲設備中(如磁碟)。持久化的主要應用是將記憶體中的對象存儲在關係型的資料庫中,當然也可以存儲在磁碟文件中、XML數據文件中等等。 持久化是將程式數據在持久狀態和瞬時狀態間轉換的機制。 JDBC就是一種持久化機制。文件IO也 ...
  • //fourth day to study python 24. In python , how to create funcation. we can use def to define funcation. such as: def MyFirstFuncation(): print('this ...
  • 請註意以下要點: 1、是否開啟了認證,QQ郵箱、163郵箱均要開啟認證 2、javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25; //連接超時 解決參考:將這個屬性的true加上引 ...
  • stdafx.h: Form1.h ...
  • 1.安裝 Erlang,官網:https://www.erlang.org/ 2.安裝RabbitMQ伺服器,rabbitMQ server,官網http://www.rabbitmq.com/ 註:可以根據不同的需要到官網進行相關下載!!! 3.安裝完成之後需要對其進行配置變數: 創建新的系統變數 ...
  • 最近想用C++在windows下實現一個基本的圖像查看器功能,目前只想到了使用GDI或OpenGL兩種方式。由於實在不想用GDI的API了,就用OpenGL的方式實現了一下基本的顯示功能。用GDAL讀取圖像,這樣就能與圖像格式無關。OpenGL的glDrawPixels()函數也能實現圖像顯示,但是... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...