“萬能”的數組

来源:http://www.cnblogs.com/DF-fzh/archive/2016/04/09/5370467.html
-Advertisement-
Play Games

【前面的話】說數組“萬能”,可能誇張了一點,但是就個人觀點,數組的運用是非常廣泛的,這裡的廣泛當然也包含了在其他語言中的運用。舉例說明,在javascript當中,由於字元串的不可變性,在進行字元串拼接等操作中,都極大的消耗了記憶體,這時候用數組來“裝載”字元串,操作簡單,又不消耗過多的記憶體,真可謂是 ...


【前面的話】說數組“萬能”,可能誇張了一點,但是就個人觀點,數組的運用是非常廣泛的,這裡的廣泛當然也包含了在其他語言中的運用。舉例說明,在javascript當中,由於字元串的不可變性,在進行字元串拼接等操作中,都極大的消耗了記憶體,這時候用數組來“裝載”字元串,操作簡單,又不消耗過多的記憶體,真可謂是“香餑餑”。下麵我總結了數組當中常用的一些操作。

——首先我們來對數組進行簡單的介紹:

//   var o = { };
//   o.c     屬性;
//   o["c"]   鍵-值 的集合; 字典
// 這兩個的效果是一樣的
  
var array = [6,7,5,84,6];
//所有對象,都具有toString和valueOf
console.log(array.toString());//toSTring內部就調用join()
console.log(array.valueOf());//返回當前數組對象

    1、 array.join();    // 將數組元素連接起來以構建一個字元串

1 // 將一個字元串數組輸出為|分割的形式,比如“劉備|張飛|關羽”。使用兩種方式實現
2  var array = ["劉備","張飛","關羽"];
3  console.log(array.join("|"));

    2、 array.reverse();    // 顛倒數組中元素的順序

1 //    將一個字元串數組的元素的順序進行反轉。["a","b","c","d]——>["d","c","b","a"]
2       var array = ["a","b","c","d"];
3       array.reverse();
4       console.log(array);

 3、 array.filter();    // 使用指定的函數測試所有元素,並創建一個包含所有通過測試的元素的新數組    //這裡涉及到相容舊環境的問題

 1 var array = [1500,1200,2000,2100,1800];
 2        //會把篩選的結果返回一個新數組
 3  array = array.filter(function(element,index,thisObj){
 4        //element 數組中的每一個元素
 5        //index 索引
 6        //thisObj 當前數組對象
 7     if (element >= 2000) {
 8          return false;
 9     }
10     return true;
11  });
12     console.log(array);
4、 array.indexOf();             array.lastIndexOf();
//    ["c","a","z","a","x","a"]找到數組中每一個a出現的位置,找不到返回-1
        //indexOf  獲取數組中第一個符合條件元素的位置
        //lastIndexOf   獲取數組中最後一個符合條件的元素的位置     
 
      var array = ["a","a","z","a","x","a"];
      console.log(array.indexOf("a",2));
      console.log(array.lastIndexOf("a"));
//
      var index = -1;
      do {
           index = array.indexOf("a", index+1);
           if (index != -1) {
           console.log(index);
          }
       }while(index != -1);

 5、 array.sort();

 1 //    ["c","a","z","a","x","a"]編寫一個方法,求數組中每一個字元出現的次數
 2 //    排序
 3      var array = [3,6,1,5,10,2];
 4 //   array.sort();//如果不傳參數,按預設的方式排序,按第一個字元的ascii碼排序
 5 //   console.log(array);
 6  
 7 //如果 compareFunction(a, b) 小於 0 ,那麼 a 會被排列到 b 之前;
 8 //如果 compareFunction(a, b) 等於 0 , a 和 b 的相對位置不變。備註: ECMAScript 標準並不保證這一行為,而且也不是所有瀏覽器都會遵守(例如 Mozilla 在 2003 年之前的版本);
 9 //如果 compareFunction(a, b) 大於 0 , b 會被排列到 a 之前。
10     array.sort(function(a,b) {
11         return a - b;
12     });
13     console.log(array);
14  
15 //調用自己模擬的sort
16 //sort(array, function(a,b) {
17 //    return -(a - b);
18 //});
19 //console.log(array);

6、 array.splice();  //插入、刪除或替換數組的元素

var a = [1,2,3,4,5,6,7,8]
a.splice(4);        // 返回 [5,6,7,8]; a is [1,2,3,4]
a.splice(1,2);      // 返回 [2,3]; a is [1,4]
a.splice(1,1);      // Netscape/JavaScript 1.2 返回 4 ,應該返回 [4]
a.splice(1,0,2,3);  // Netscape/JavaScript 1.2 返回 undefined ,應該返回 []

7、 array.slice();  // 從當前數組截取一個新數組  

var a = [1,2,3,4,5];
a.slice(0,3);    // 返回 [1,2,3]
a.slice(3);      // 返回 [4,5]
a.slice(1,-1);   // 返回 [2,3,4]
a.slice(-3,-2);  // 返回 [3]; IE 4存在的Bug: 返回[1,2,3]
8、 array.forEach();   //遍曆數組                                      //  註意與filter的區別
                                    //這裡涉及到相容舊環境
 1     var array = [4,6,7,8,3,46,8];
 2  
 3         //forEach  遍曆數組
 4 //        array.filter(function (item,index,obj) {
 5 //        })
 6  
 7         for(var i = 0; i < array.length ; i++) {
 8             var item = array[i];
 9         }
10  
11         array.forEach(function (item, index,obj) {
12             console.log(item);
13             console.log(index);
14             console.log(obj);
15         })

【輸出】

9、 html5提供的方法: i)indexOf ;    lastIndexOf ii)filter ;  forEach   

10、清空數組的三種方式:

var array = [1, 2, 3, 4];
//方式1
array.splice(0,array.length); //刪除數組中所有項
//方式2
array.length = 0;  //length屬性可以賦值,length是只讀
//方式3
array = [];  // 推薦

 


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

-Advertisement-
Play Games
更多相關文章
  • 測試 ...
  • 因為JavaScript 中this 是在運行期進行綁定的,因此JavaScript 中this 關鍵字具備多重含義。 具體在實際應用中,this的指向大致可以分為下麵4種。 作為對象的方法調用 和 作為普通函數調用 註意,不管x之前是obj.getA,還是其他某個對象的屬性,只要最後是以x(),f ...
  • 新增功能 1. HTML5新標準中直接添加了擁有具體含義的HTML標簽比如:<article>、<footer>、<header>、<nav>、<section>、<video>, <progress>(進度條)、<meter>(容量占用條)、<time>(不顯示效果), <aside>(文章側欄) ...
  • 一、實現效果 1.初始化效果:未添加樣式和特效 2、添加CSS樣式 3、最終效果 二、JQuery代碼 三、完整代碼 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>JQuery製作導航欄 ...
  • touchstart:觸摸開始的時候觸發 touchmove:手指在屏幕上滑動的時候觸發 touchend:觸摸結束的時候觸發 而每個觸摸事件都包括了三個觸摸列表,每個列表裡包含了對應的一系列觸摸點(用來實現多點觸控): touches:當前位於屏幕上的所有手指的列表。 targetTouches: ...
  • 原文出自:http://kb.cnblogs.com/page/92320/ HTTP(HyperTextTransferProtocol)即超文本傳輸協議,目前網頁傳輸的的通用協議。HTTP協議採用了請求/響應模型,瀏覽器或其他客戶端發出請求,伺服器給與響應。就整個網路資源傳輸而言,包括messa ...
  • 看到同學找到了阿裡的這麼一個面試題,感覺挺有趣,就做了做。 用div+css做出如下效果: 當滑鼠移入帶紅色div上的時候,div的大小增大25%,其他的不變。如下圖: 詳細代碼如下: <!doctype html><html lang="en"> <head> <meta charset="UTF ...
  • 第七章 1、 樣式表:選擇器和生命塊 2、 !important: 某條聲明的重要程度比其他高,在末尾添加 3、 屬性值:inherit; 是強制繼承 4、 1em=16px; 5、 可以接受不帶單位的屬性:line-height、z-index、opacity 6、 background-colo ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...