JavaScript筆記6-數組新方法

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

七.ECMAScript5關於數組的新方法1.forEach():遍曆數組,併為每個元素調用傳入的函數; 舉例: 1 var a = [1,2,3]; 2 var sum = 0; 3 //傳一個參數 4 a.forEach(function(v){ 5 sum += v; 6 }); 7 cons... ...


七.ECMAScript5關於數組的新方法
1.forEach():遍曆數組,併為每個元素調用傳入的函數;
     舉例:
   

  1  var a = [1,2,3];
  2      var sum = 0;
  3      //傳一個參數
  4     a.forEach(function(v){
  5          sum += v;
  6      });
  7      console.log(sum);//6
  8      //傳三個參數(元素值,索引,數組本身)
  9      a.forEach(function(v,i,a){
 10          a[i]=v+1;//為數組的各元素自加1
 11      })
 12      console.log(a);//[2,3,4]

2.map():將調用該函數的數組的每個元素都傳入指定函數,並返回運算後的新數組;
註意:該函數不修改原數組.
舉例:

  1 var a = [1,2,3];
  2 var b = a.map(function(x){
  3      return x*x;
  4  })
  5  console.log(b);//[1,4,9]


3.filter():將調用該函數的數組的每個元素傳入指定函數進行判定,若判定為true,則返回.最終返回一個符合指定條件(函數)的元素的集合(該集合為原數組的子集)
註:該函數會跳過稀疏數組中缺少的元素,總是返回稠密數組,利用此特性可以壓縮稀疏數組.
     舉例1:
   

  1  var a = [1,2,3];
  2      var c = a.filter(function(x){
  3          return x<3;
  4      })
  5      console.log(c);

     舉例2:
   
  1  var a = [ ,1,null,3,4, ,];
  2      console.log(a.length);//6
  3      var dense = a.filter(function(){
  4          return true;//過濾掉undefined
  5      });
  6      console.log(dense);//[1,null,3,4]
  7      console.log(a);//Array(6) […, 1, null, 3, 4]未改變原有數組
  8     var c = a.filter(function(x){
  9      return x!=undefined && x != null;
 10      });
 11      console.log(c);//Array(3) [1, 3, 4]

4.every():遍歷調用該方法數組的每個元素,判定是否符合指定條件(函數),全部符合則返回true;註意空數組調用時返回true;
some():遍歷調用該方法數組的每個元素,判定是否符合指定條件(函數),只要有一個符合則返回true;註意空數組調用時返回false;
     舉例1:
   

  1  var a = [1,2,3,4,5];
  2      var b = a.every(function(x){
  3         return x >0;//判定是否所有元素均大於0
  4      });
  5      console.log(b);//true
  6      var c = a.some(function(x){
  7          return x < 4; //判定是否有元素小於4
  8      });
  9      console.log(c);//true

     舉例2:空數組調用
    
  1 var d = [];
  2      console.log(d.every(function(x){
  3          return x;
  4      }));//true
  5      console.log(d.some(function(x){
  6          return x;
  7      }));//false

5.reduce()和reduceRight()
使用指定的函數對數組元素進行組合,生成單個值.指定函數需要兩個值(第一個是執行化簡操作的函數;第二個(可選)是傳遞給函數的初始值)
註意:1)無第二個參數時,函數會調用數組的第一個元素作為初始值,若數組為空數組則報"類型錯誤"異常;
2)若數組只有一個元素,並且未提供第二個參數,則不會調用函數,只是返回該唯一元素;
舉例1:

  1 var a = [1,2,3,4,5];
  2  //求和
  3 var sum = a.reduce(function(x,y){
  4      return x+y;
  5  },0);
  6  console.log(sum);//15
  7  //求積
  8 var mul = a.reduce(function(x,y){
  9      return x*y;
 10  },1)
 11  console.log(mul);//120
 12  //求最大值
 13 var max = a.reduce(function(x,y){
 14      return x>y?x:y;
 15  },0)
 16  console.log(max);//5

舉例2:冪運算
  1 var a = [2,3];
  2 var big = a.reduceRight(function(x,y){
  3      return Math.pow(y,x);
  4  });
  5  console.log(big);//2^3=8
  6 
  7 var big1 = a.reduceRight(function(x,y){
  8      return Math.pow(x,y);
  9  });
 10  console.log(big1);//3^2=9
 11 


6.indexOf()和lastIndexOf()
返回給定索引值的元素,lastIndexOf()從右往左搜索;若沒有找到,則返回-1;
註意:該函數可接收兩個參數,第一個參數為需要搜索的索引;第二個為開始搜索的位置(可選);兩個參數都不為函數;
舉例:定義一個函數,查找數組中所有出現的x,並返回包含所有索引的數組

  1 function findall(a,x){
  2      var results = [];    //定義空數組,用來接收x的索引值
  3     len = a.length;    //搜索的最大長度
  4     pos = 0;    //開始搜索的位置
  5     while(pos<len){
  6          pos = a.indexOf(x,pos); //從pos開始搜索x
  7          if(pos === -1){
  8              break;    //找不到就返回
  9         }
 10          results.push(pos);//存儲索引值
 11         pos = pos+1;
 12      }
 13      return results;
 14  }
 15 測試
 16 var a = [1,2,3,2,4];
 17  console.log(findall(a,2));//Array(2) [1, 3]

八.判定是否為數組
Array.isArray():判定是否為數組類型,是則返回true;

九.字元串可以作為只讀的數組
可以使用方括弧([])訪問單個字元;
也可以作用charAt()方法
舉例:

  1 var s = test;
  2  s.charAt(0);//"t"
  3  s[0];//"t"

十:需求:將完全由數字組成的字元串轉為數字類型,如"1345"轉為1345
法一:

  1 'use strict';
  2  function string2int(s){
  3      //將s轉為字元串數組
  4     var str = s.split('');
  5      //調用map()將字元串數組轉為數字數組
  6     var arr = str.map(function(x){
  7          //字元-0即可變為數字
  8         return x-0;
  9      })
 10      //調用reduce(),將數字數組轉為int類型
 11     var res = arr.reduce(function(x,y){
 12         return x*10+y;
 13      })
 14      //返回結果
 15     return res;
 16  }

法二:
  1 'use strict';
  2 var b = "1345";
  3  //split():將字元串轉為字元類型的數組
  4 var c = b.split('');
  5  //與0做減法運算,將字元類型轉為數字類型
  6 var d = [];
  7  for(var i= 0;i<c.length;i++){
  8      d[i]=c[i]-0;
  9  }
 10  //轉為整型
 11 var e = d.reduce(function(x,y){
 12      return x*10+y;
 13  })
 14  console.log(e);


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

-Advertisement-
Play Games
更多相關文章
  • "DDD理論學習系列——案例及目錄" 1.引言 在針對大型的複雜領域進行建模時,聚合、實體和值對象之間的依賴關係可能會變得十分複雜。在某個對象中為了確保其依賴對象的有效實例被創建,需要深入瞭解對象實例化邏輯,我們可能需要載入其他相關對象,且可能為了保持其他對象的領域不變性增加了額外的業務邏輯,這樣即 ...
  • 本篇為繼上一篇的續篇,主要內容分為以下幾點: 1、zookeeper集群 2、web管理平臺 3、dubbo配置說明 接下來我們開始繼續吧。 一、zookeeper集群 顧名思義也就是多台zookeeper服務以及多台伺服器共同協作。 在上一篇中我們已經把dubbo-consumer工程實現了,我們 ...
  • var json = [ {"id":"1","tagName":"apple"}, {"id":"2","tagName":"orange"}, {"id":"3","tagName":"banana"}, {"id":"4","tagName":"watermelon"}, ...
  • 今天修改了一個功能,限制刪除用戶,在刪除的時候不滿足條件的時候提示用戶原因,使用的sweet alert組件。 abp框架前端集成了sweet alert 對http請求的error做了全局處理,我在後臺程式直接拋出的UserFriendlyExcption,開始的時候發現能提示,然後再次操作發現沒 ...
  • View:承載佈局,樣式,和事件交互邏輯Controller:承載邏輯和視圖,簡單的佈局主軸方向和排列Model:XXXManager,封裝數據操作,為上層容器組件提供數據,和功能 Nodejs環境,後臺通過API(application public interface)介面暴露服務Web框架:e ...
  • 求冪運算符 let a = 7 12 let b = 2 7 console.log(a === Math.pow(7,12)) // true console.log(b === Math.pow(2,7)) // true // let a = 7 a = 12 let b = 2 b = 7 ...
  • 原文:History and Background of JavaScript Module Loaders 作者:Elias Carlston 翻譯:leotso 介紹 Web 應用程式的應用程式邏輯不斷從後端移到瀏覽器端。但是,由於富客戶端 JavaScript 應用程式的規模變得更大,它們遇到 ...
  • 電影網站 👉 GitHub: https://github.com/bxm0927/movie-website 此項目是基於 Node.js + Express + mongoDB + Bootstrap 搭建的電影網站。 主要功能模塊: 一期:前臺電影展示頁、電影詳情頁、後臺電影管理中心(電影錄 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...