JS-數組

来源:https://www.cnblogs.com/tomomo/archive/2022/08/27/16567217.html
-Advertisement-
Play Games

數組 數據結構 數據的結構 (邏輯結構 存儲結構 演算法) 存儲結構 (數據存儲的結構方式) 線性結構 數組(順序表) 隊列 棧 堆 鏈表 非線性結構 樹 圖hash (散列表) 只要是能存數據的容器 就必須具備增刪改查的方法 數組 數組概述:數組固定一類數據的組合(一般情況下我們數組裡面的數據類型一 ...


數組

數據結構

 數據的結構 (邏輯結構 存儲結構 演算法)

存儲結構 (數據存儲的結構方式)
線性結構

數組(順序表)  隊列  棧  堆  鏈表

非線性結構

樹  hash  (散列表)

只要是能存數據的容器 就必須具備增刪改查的方法

數組

數組概述:數組固定一類數據的組合(一般情況下我們數組裡面的數據類型一致)(多個數據)

數組的聲明(引用數據類型)

1.使用[] 聲明數組

//裡面的數據以,進行分隔
var arr = [1,2,3]

 

2.使用new 關鍵詞進行聲明 (對象)

var arr = new Array(10) //裡面參數指定對應的長度 如果你沒有寫 表示長度為0
var arr2 = new Array(1,2,3,4) //當前數組裡面的數據有 1 2 3 4

 

length屬性來訪問對應的長度(也可以進行設置)
var arr = new Array()
//通過length來訪問數組的長度
console.log(arr.length);
arr.length = 11 //設置對應的長度
console.log(arr);

 

下標訪問
console.log(arr[0])//獲取第一個
//可以允許字元串
console.log(arr['0']); //獲取第一個

 

數組的賦值
arr[0] = 10
console.log(arr[0]) //10
// 給數組裡面的元素隨機給值
var arr = new Array()
for(var i=0;i<10;i++){
arr[i] = Math.random() //0-1 包含0 不包含1的
}
console.log(arr);

 

數組遍歷

傳統的for迴圈遍歷
var arr = [1,2,3,45,12]
//利用順序表的特點 有序
for(var i=0;i<arr.length;i++){
    console.log(arr[i])
}

 

for in遍歷 (對象 下標 迭代器 next)
var arr = [1,2,3,45]
for(var index in arr){ //index表示的為下標
    console.log(arr[index])
}

 

for of進行遍歷(數組 迭代器來實現的)
//使用for of遍歷(只能遍曆數組)
for(var value of arr){ //value表示的是裡面值
    console.log(value)
}

 

數組的方法

數組是一個存儲結構(增刪改查的操作)

添加 (add push append..)
棧方法 (先進後出 後進先出)push 入棧 pop出棧操作

push方法(添加到最後一個)

var arr = [1]
arr.push(10)
console.log(arr) //[1,10]

 

隊列方法(先進先出 後進後出)

unshift方法(添加到第一個)

var arr = [1]
arr.unshift(10)
console.log(arr) //[10,1]

 

刪除 (delete(硬刪) remove(軟刪)..)
棧方法

pop方法(刪除最後面)

var arr = [1,2,3]
arr.pop() //下標不寫的
console.log(arr) //[1,2]

 

隊列方法

shift方法(刪除第一個)

var arr = [1,2,3]
arr.shift()
console.log(arr) //[2,3]

 

修改 (replace替換 update 更新)

反轉 reverse(將最後一個變到第一個 一個個對應的換位置)

//改變原本的數組
var arr = [1,2,3,4,8]
var arr1 = arr.reverse(); //返回一個數組 這個數組就是反轉後的數組
arr1.unshift(10) //返回的反轉後的數組其實就我們原本的數組
console.log(arr) //反轉後的結果 [8,4,3,2,1] 
console.log(Object.is(arr1,arr));//true

 

排序 sort

//sort方法排序 //預設情況下他是根據第一個字元的ACSII碼進行排序 (ACSII碼排序)
var arr2 = [15,20,11,4,5]
arr2.sort() //返回一個數組 這個數組是排序好的數組 他跟上面一樣 就是返回的這個數組其實就是原本的數組
console.log(arr2);
// sort 其實是一個高階函數 高階函數就是裡面用函數做為參數的函數
var arr3 = [15,20,11,4,5]
arr3.sort(function(a,b){
    //1 和 -1來進行大小區分和排序規則
    return  b-a //a-b是正序 b-a就倒序
})
console.log(arr3);

 

不影響原本數組的方法
concat (連接)
//不會影響原本數組的方法 返回新的數組
var arr = [1,2,3,4]
var arr1 = [1,2,3,4]
var arr2 = [1,2,3,4]
var arr3 = [1,2,3,4]
// concat 連接 把多個數組變成一個數組 返回 ...擴展運算符 打開數組取出裡面的值(...證明可以寫任意個) ? 表示可寫可不寫
var newArr = arr.concat(arr1,arr2,arr3)
console.log(newArr);

 

slice (截取)
// slice 切片 把一個數組裡面東西提出 返回的新的數組
var sliceArr = arr.slice()//全切
console.log(sliceArr);
var sliceArr1 = arr.slice(0)//從0開始切到最後 如果下標不存在返回一個空數組
console.log(sliceArr1);
var sliceArr2 = arr.slice(2,3)//包含結束的下標 包含開始的下標
console.log(sliceArr2);

 

splice 方法 (刪除)
//splice會影響之前的數組 刪除 截取 插入
var arr = [12,13,45]
//參數 開始位置 刪除的個數(可以寫可以不寫 數組的length) 返回一個新的數組
console.log(arr);
var newArr =  arr.splice(1,2) //從開始刪
console.log(newArr);
//獲取刪除的內容 其實就截取裡面的內容(不足是會改變之前的數組)

 

排序演算法

1.冒泡排序 (最基礎的排序) O(n^2)

2.選擇排序 (選擇最大值的下標(或者最小值的下標)進行比較的排序)O(n^2)

3.快速排序 (在數據量不多最快的 冒泡排序的進階)二分 O(nLogn)

4.希爾排序 (插入排序的進階)

5.插入排序 (插入數據的時候進行排序)

6.歸併排序 (大數據排序的常用排序演算法)

.....

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

-Advertisement-
Play Games
更多相關文章
  • 1.MySQL中執行一條SQL的總體流程 2.SQL函數執行過程 1.MySQL中執行一條SQL的總體流程 一條包含函數的SQL語句,在mysql中會經過: 客戶端發送,伺服器連接,語法解析,語句執行的過程。 調試源碼,分析函數的具體執行過程,在客戶端,執行select to_char(‘test’ ...
  • 概述 Redis 在 3.0 之後開始支持 Cluster(集群)模式,特點如下: 支持節點的自動發現:可向集群動態添加節點,並自動融入 支持 slave-master 選舉和容錯:多個 master 宕機後,選舉出新的 master 繼續工作 線上分片:當有新的節點加入時,為新節點分配 slot ...
  • 摘要:今天給大家帶來一篇MySQL資料庫崩潰的修複案例 本文分享自華為雲社區《記一次MySQL崩潰修複案例,再也不用刪庫跑路了》,作者: 冰 河。 問題描述 研究MySQL源代碼,調試並壓測MySQL源代碼時,MySQL崩潰了!問題是它竟然崩潰了!而且還損壞了InnoDB文件!!還好是在調試環境下發 ...
  • 如何去掉vue的url地址中的#號?及其原理? 點擊打開視頻講解更加詳細 如何去掉vue的url地址中的#號? import Vue from 'vue'; import VueRouter from 'vue-router'; Vue.use(VueRouter) // 1. 定義一些路由 // ...
  • ##Query 是一個 JavaScript 函數庫。 jQuery 是一個輕量級的"寫的少,做的多"的 JavaScript 庫。 jQuery 庫包含以下功能: HTML 元素選取 HTML 元素操作 CSS 操作 HTML 事件函數 JavaScript 特效和動畫 HTML DOM 遍歷和修 ...
  • 1、axios的二次封裝 BiliBili作者原地址,多多支持 npm i axios //下載axios 首先創建兩個文件夾在src目錄下;api和config 先在config文件夾下建立一個index.js;具體代碼如下 export default{ baseUrl:{ dev: "http ...
  • 對象及日期定時器 Date日期 日期對象的定義(使用new關鍵詞) 1.獲取當前的時間(本地的時間) var date = new Date() //不傳參就是獲取當前時間 2.獲取指定的時間 var date = new Date(123456) //一個參數毫秒值 將這個毫秒值去加上對應的197 ...
  • 字元串 字元串 字元串也是一個數據結構,將同樣的內容串在一塊。因為在對應的js裡面字元串屬於一個值類型(值類型是常量 常量是不能變)。字元串是不能改變的。結合數據結構裡面串也是一個存儲結構,作為存儲結構增刪改查的方法(字元串的增刪改查 不能針對於本身 而是返回一個新的字元串) 字元串的聲明 1.值類 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...