搜尋
首頁web前端js教程JS求Number類型數組中最大元素方法

JS求Number類型數組中最大元素方法

May 26, 2018 pm 01:53 PM
javascript元素

這篇文章主要介紹如何用JS求Number類型陣列中最大元素

如何使用JS,在一個Number類型的陣列裡,找出最大(或最小)數呢?

以下介紹四個方法。

1. 不使用任何函式庫函數

程式碼如下:

function findMax1 (arr) {
  let result = 0;
  if (Array.isArray(arr)) {
    for (let i = 0; i < arr.length; i++) {
      result = arr[i] > result ? arr[i] : result;
    }
    
    return result;
  } else {
    console.error(&#39;The parameter arr is not an array&#39;);
    return;
  }
}

解釋:

利用一個變數result來儲存最大值。遍歷待尋找的數組,如果目前遍歷的元素大於result,就把這個元素賦值給result。

2. 利用Array.reduce()

程式碼如下:

function findMax2 (arr) {
  let result = 0;
  if (Array.isArray(arr)) {
    result = arr.reduce((a, b) => {
      return a > b ? a : b;
    }, 0);
    
    return result;
  } else {
    console.error(&#39;The parameter arr is not an array&#39;);
    return;
  }
}

解釋:

reduce方法就是透過一個函數,針對一個累加器(accumulator)和陣列中的每一個元素,將一個陣列最終減少到一個值。

reduce接受兩個參數:

第一個是callback,就是那個前面提到的那個函數。它有四個參數:

  1. accumulator:累加器,它是上次執行callback的結果。如果提供了initialValue,那麼第一次就是initialValue;

  2. currentValue:目前遍歷的陣列的元素;

  3. currentIndex:目前遍歷的數組的元素的index,從0開始。如果提供了initialValue,那就從1開始;

  4. array:目前應用reduce的陣列。

第二個是initialValue,是初值,第一次執行callback函數的第一個實參。這個是可選的。這裡要注意一下,如果這個參數不提供,並且應用在空數組上,是會報錯的。

那麼上面程式碼的意思就是,每次遍歷數組進行比較,大的就留下來,即accumulator,並將其用作下一次和數組元素的比較。最後只留下這一個值,即最大值。

3. 利用Apply和Math.max()

#程式碼如下:

function findMax3 (arr) {
  let result = 0;
  if (Array.isArray(arr)) {
    result = Math.max.apply(null, arr);
    
    return result;
  } else {
    console.error(&#39;The parameter arr is not an array&#39;);
    return;
  }
}

##解釋:

apply解釋稍顯複雜,不作進一步的解釋。

它接受兩個參數,第一個是thisArg,第二個是argsArray。兩個都是可選的。這裡簡單來說,就是使用一個函數時,參數會以陣列的方式傳遞進去。

4. 只用Math.max()

程式碼如下:

##
function findMax4 (arr) {
  let result = 0;
  if (Array.isArray(arr)) {
    result = Math.max(...arr);
    
    return result;
  } else {
    console.error(&#39;The parameter arr is not an array&#39;);
    return;
  }
}

解釋:

基於上一個解法的思路,在ES6中,有一個擴展運算子(...),可以將一個陣列中的元素拆出來,組成一個用逗號分隔的序列。剛好滿足Math.max()函數的需求。

在跟大家介紹JS之number、Math和陣列的相關知識點

#1、Number物件。

建立Number物件的方式:


方式1:


#var 變數= new Number(數字)


方式2:


var 變數= 數字;


常用的方法:


toString() 把數字轉換成指定進位形式的字串。 (輸入數字幾,就轉換為幾, number.toString(2))


toFixed() 指定保留小數位,而且還帶四捨五入的函數。

2、Math  

Math物件常用的方法:

ceil 向上取整


floor() 向下取整


random() 隨機數方法// 產生的偽隨機數介於0 和1 之間(含0,不含1),


round 四捨五入

3、Array陣列物件:

建立陣列的方式1:

var 變數名稱= new Array(); 建立一個長度為0的陣列。

方式2:

var 變數名稱= new Array(長度) 建立一個指定長度的陣列物件。

方式3:

var 變數名稱 = new Array("元素1","元素2"...); 為陣列指定元素建立陣列 的物件。

方式4:

var 變數名稱= ["元素1","元素2"...];


陣列要注意的細節:

1. 在javascript中陣列的長度是可以改變的。

var arr = new Array(); //创建了一个长度为0的数组对象。
arr[100] = 10;
document.write("arr长度:"+arr.length+"<br/>");
var arr2 = new Array("狗娃","狗剩","铁蛋");
arr2 = ["狗娃","狗剩","铁蛋","张三"];
document.write("arr2长度:"+arr2.length+"<br/>");

3.1數字的方法

#
a、concat把arr1与arr2的数组元素组成一个新的数组返回。  
arr1 = arr1.concat(arr2);

b、join使用指定的分隔符把數組中的元素拼裝成一個字串返回。

var elements = arr1.join(",");

c、pop :移除陣列中的最後一個元素並傳回該元素。

d、push:將新元素加入到一個陣列中,並傳回陣列的新長度值。

arr1.push("你好");

e、reverse(); 翻轉數組的元素

f、slice指定數組的開始索引值與結束索引值截取數組的元素,並且傳回子數組。 (包頭不包尾)

var subArr = arr1.slice(1,2);


#g、sort排序,排序的時候一定要傳入排序的方法。 (不傳時預設是依照ASCII表排列)

arr1 = [19,1,20,5];
arr1.sort(sortNumber); //排序,排序的时候一定要传入排序的方法。
function sortNumber(num1,num2){ 
return num1-num2;
}

#h、splice第一個參數是開始刪除元素的索引值, 第二參數是刪除元素的個數,往後的資料就是插入的元素(也可以不寫)。

arr1.splice(1,1,"张三","李四","王五");

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

Ajax取得回應內容長度的方法

Ajax方式實作定期更新頁面某一區塊內容的方法

ajax讀取properties資源檔案資料的方法

#########################

以上是JS求Number類型數組中最大元素方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

node.js流帶打字稿node.js流帶打字稿Apr 30, 2025 am 08:22 AM

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python vs. JavaScript:性能和效率注意事項Python vs. JavaScript:性能和效率注意事項Apr 30, 2025 am 12:08 AM

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript的起源:探索其實施語言JavaScript的起源:探索其實施語言Apr 29, 2025 am 12:51 AM

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來:趨勢和預測Python和JavaScript的未來:趨勢和預測Apr 27, 2025 am 12:21 AM

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python vs. JavaScript:開發環境和工具Python vs. JavaScript:開發環境和工具Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。