數組&對象

来源:https://www.cnblogs.com/alisadream/archive/2018/12/27/10184909.html
-Advertisement-
Play Games

一、遍曆數組的幾種方式 var arr = [1,2,3]; Array.prototype.test=function(){} arr.name='jq' 1、 for /* * index是number類型的,可以使用break,continue,return語句 * 可以遍歷對象 */ for ...


一、遍曆數組的幾種方式  
var arr = [1,2,3];
Array.prototype.test
=function(){} arr.name='jq'
  1、 for 
/*
* index是number類型的,可以使用break,continue,return語句
* 可以遍歷對象
*/
for (var index = 0, length = arr.length; index < length; index++) { console.log(index); // 0, 1, 2 console.log(arr[index]); // 1, 2, 3 }

 

2、 for in 遍曆數組索引
/*
* 除了遍曆數組元素外,還會遍歷自身可枚舉屬性,以及原型鏈上屬性
* 適用於普通對象,不適合數組遍歷
* 可以使用break,continue,return語句
*/

for (var index in arr) {
    console.log(index); // 0, 1, 2, name, test
    console.log(arr[index]); // 1, 2, 3, jq, ƒ (){}
}

 

3、 for of 遍曆數組元素值
/*
* 只遍曆數組元素
* 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象
* 可以使用break,continue,return語句
*/

for (var item of arr) {
    console.log(item); // 1, 2, 3
}

 

4、 forEach 對數組每個元素執行一次提供的函數
/*
* 只遍曆數組元素
* 參數:item 數組元素當前值,index 數組索引,array 數組本身
* 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象
* break,continue,return語句無效
*/

arr.forEach(function(item, index, array) {
    console.log(index); // 0, 1, 2
    console.log(item); // 1, 2, 3
})

 

5、 map 對數組元素處理,並返回一個新數組,原始數組不會被改變
/*
* 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象
* break,continue,return語句無效
* 參數:item 數組元素當前值,index 數組索引,array 數組本身
*/

arr.map(function(item, index, array) {
    console.log(index); // 0, 1, 2
    console.log(item); // 1, 2, 3
    return 0;
})

 

6、 reduce = map + filter
/*
* reduce 使用回調函數迭代地將數組簡化為單一值
* 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象
* 參數:callback 和 初始值
* accumulator: 函數上一次調用的返回值
* item: item 數組元素當前值
*/

(1) 省略初始值,則accumulator為 arr[0], item為arr[1], index為1
arr.reduce(function(accumulator, item, index, array) {
    return accumulator + item; //求數組元素和
});

執行順序:
1 + 2
3 + 3

(2) 有初始值,則accumulator為initValue,item為arr[0], index為0
arr.reduce(function(accumulator, item, index, array) {
    return accumulator + item; //求數組元素和
}, 0);

執行順序:
0 + 1
1 + 2
3 + 3

優點:減少數組迭代次數
  (7) filter 返回符合指定條件的新數組
/*
* 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象
* item: item 當前數組元素
*/

arr.filter(function(item, index, array) {
    return (item > 1);
})


結果:[2, 3]

 

8、 find 返回符合指定條件的第一個元素/*
* 只適用於數組,Set,Map,類似數組對象,不適合普通對象對象
* item: item 當前數組元素
*/

arr.find(function(item, index, array) {
    return (item > 1);
})

結果:2

 

二、遍歷對象的幾種方式 1、for 2、for in 3、將對象轉為數組Object.keys

 


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

-Advertisement-
Play Games
更多相關文章
  • 1、HTML代碼,如下圖: 2、jQuery代碼,如下圖: ...
  • 本文由雲+社區發表 目的 寫了幾個Flutter的demo,但是對Flutter的自定義view和動畫都不太瞭解,看到一個類似效果在android的實現,就嘗試用Flutter做一下。同時也是學習Flutter的自定義view和動畫相關的知識。 效果 效果動圖 在藍色區域點擊,會產品水波紋動畫。 宛 ...
  • 前言 本例基於react,但是實際上就是用原生js做的。相容性做到了IE9,但是按照這個思路做是可以做到IE8甚至更低的。 需求與最初的思路 當我拿到這個需求的時候以為很簡單,就是可以給頁面上的文章做記號,比如添加個下劃線,或者背景塗色做成熒光筆的樣子。 因為只需要相容IE9,所以window.ge ...
  • // 將一個JSON數組[{},{},{}]按一定規則合併到另一個JSON數組[{},{},{}] // Object.assign方法的第一個參數是目標對象,後面的參數都是源對象。 var list1 = [{id:2,name:'aa'},{id:4,name:'bb'},{id:1,name: ...
  • 最近,因為公司的一個新項目,用了一個基於bootstrap二次改造的國外友人的框架。感覺很一般吧,要求更換框架,客戶拒絕。只能搞這個,發現裡面一個jQuery插件-【Nestable】但是源作者長時間不更新,後來發現了一個新版本,應該是另外一個人基於Nestable改造的,稱之為“Nestable2 ...
  • vue批量判定數據是否合規 主要用於數據的提交,批量判定是否有數據是否和規則 姓名: 年齡: ... ...
  • 一、這多東西啥時候能學完? 現在IT新技術日新月異。就常用編程語言而言,有c/c++、彙編、java,c#、Python等;操作系統平臺有unix /linux,windows系列;開發工具有VC、VisualStudio2008、Eclipse、NetBeans等;每個大平臺下,還有很多的 的方向 ...
  • 目標效果:每過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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...