JS求Number類型數(shù)組中最大元素方法
如何使用JS,在一個Number類型的數(shù)組里,查找最大(或最?。?shù)呢?
以下介紹四個方法。
1. 不使用任何庫函數(shù)
代碼如下:
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('The parameter arr is not an array'); return; } }
解釋:
利用一個變量result來存儲最大值。遍歷待查找的數(shù)組,如果當(dāng)前遍歷的元素大于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('The parameter arr is not an array'); return; } }
解釋:
reduce方法就是通過一個函數(shù),針對一個累加器(accumulator)和數(shù)組中的每一個元素,將一個數(shù)組最終減少到一個值。
reduce接受兩個參數(shù):
第一個是callback,就是那個前面提到的那個函數(shù)。它有四個參數(shù):
- accumulator:累加器,它是上次運行callback的結(jié)果。如果提供了initialValue,那么第一次就是initialValue;
- currentValue:當(dāng)前遍歷的數(shù)組的元素;
- currentIndex:當(dāng)前遍歷的數(shù)組的元素的index,從0開始。如果提供了initialValue,那就從1開始;
- array:當(dāng)前應(yīng)用reduce的數(shù)組。
第二個是initialValue,是一個初值,作為第一次運行callback函數(shù)的第一個實參。這個是可選的。這里要注意一下,如果這個參數(shù)不提供,并且應(yīng)用在一個空數(shù)組上,是會報錯的。
那么上面代碼的意思就是,每次遍歷數(shù)組進(jìn)行比較,大的就留下來,即accumulator,并將其用作下一次和數(shù)組元素的比較。最后只留下這一個值,即最大值。
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('The parameter arr is not an array'); return; } }
解釋:
apply解釋稍顯復(fù)雜,不作進(jìn)一步的解釋。
它接受兩個參數(shù),第一個是thisArg,第二個是argsArray。兩個都是可選的。此處簡單來說,就是使用一個函數(shù)時,參數(shù)以數(shù)組的方式傳遞進(jìn)去。
4. 只用Math.max()
代碼如下:
function findMax4 (arr) { let result = 0; if (Array.isArray(arr)) { result = Math.max(...arr); return result; } else { console.error('The parameter arr is not an array'); return; } }
解釋:
基于上一個解法的思路,在ES6中,有一個擴(kuò)展運算符(...),可以將一個數(shù)組中的元素拆出來,組成一個用逗號分隔的序列。剛好滿足Math.max()函數(shù)的需求。
在給大家介紹一下JS之number、Math和數(shù)組的相關(guān)知識點
1、Number對象。
創(chuàng)建Number對象的方式:
方式1:
var 變量= new Number(數(shù)字)
方式2:
var 變量 = 數(shù)字;
常用的方法:
toString() 把數(shù)字轉(zhuǎn)換成指定進(jìn)制形式的字符串。(輸入數(shù)字幾,就轉(zhuǎn)換為幾, number.toString(2))
toFixed() 指定保留小數(shù)位,而且還帶四舍五入的功能。
2、Math
Math對象常用的方法:
ceil 向上取整
floor() 向下取整
random() 隨機(jī)數(shù)方法 // 產(chǎn)生的偽隨機(jī)數(shù)介于 0 和 1 之間(含 0,不含 1),
round 四舍五入
3、Array數(shù)組對象:
創(chuàng)建數(shù)組的方式1:
var 變量名 = new Array(); 創(chuàng)建一個長度為0的數(shù)組。
方式2:
var 變量名= new Array(長度) 創(chuàng)建一個指定長度的數(shù)組對象。
方式3:
var 變量名 = new Array("元素1","元素2"...); 給數(shù)組指定元素創(chuàng)建數(shù)組 的對象。
方式4:
var 變量名 = ["元素1","元素2"...];
數(shù)組要注意的細(xì)節(jié):
1. 在javascript中數(shù)組的長度是可以發(fā)生變化的。
var arr = new Array(); //創(chuàng)建了一個長度為0的數(shù)組對象。 arr[100] = 10; document.write("arr長度:"+arr.length+"<br/>"); var arr2 = new Array("狗娃","狗剩","鐵蛋"); arr2 = ["狗娃","狗剩","鐵蛋","張三"]; document.write("arr2長度:"+arr2.length+"<br/>");
3.1數(shù)字的方法
a、concat把a(bǔ)rr1與arr2的數(shù)組元素組成一個新的數(shù)組返回?! ? arr1 = arr1.concat(arr2);
b、join使用指定的分隔符把數(shù)組中的元素拼裝成一個字符串返回。
var elements = arr1.join(",");
c、pop :移除數(shù)組中的最后一個元素并返回該元素。
d、push:將新元素添加到一個數(shù)組中,并返回數(shù)組的新長度值。
arr1.push("你好");
e、reverse(); 翻轉(zhuǎn)數(shù)組的元素
f、slice指定數(shù)組 的開始索引值與結(jié)束索引值截取數(shù)組的元素,并且返回子數(shù)組。(包頭不包尾)
var subArr = arr1.slice(1,2);
g、sort排序,排序的時候一定要傳入排序的方法。(不傳時默認(rèn)是按照ASCII表排列)
arr1 = [19,1,20,5]; arr1.sort(sortNumber); //排序,排序的時候一定要傳入排序的方法。 function sortNumber(num1,num2){ return num1-num2; }
h、splice第一個參數(shù)是開始刪除元素的 索引值, 第二參數(shù)是刪除元素的個數(shù),往后的數(shù)據(jù)就是插入的元素(也可以不寫)。
arr1.splice(1,1,"張三","李四","王五");
相關(guān)文章
JavaScript中join()、splice()、slice()和split()函數(shù)用法示例
這篇文章主要介紹了JavaScript中join()、splice()、slice()和split()函數(shù)用法,結(jié)合實例形式較為詳細(xì)的分析了join()、splice()、slice()和split()函數(shù)的功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2018-08-08uni-app使用uniCloud實現(xiàn)圖形驗證碼(uni-captcha)詳細(xì)過程
這篇文章主要給大家介紹了關(guān)于uni-app使用uniCloud實現(xiàn)圖形驗證碼(uni-captcha)的相關(guān)資料,實際開發(fā)工作中在登陸的時候經(jīng)常需要圖形驗證碼,需要的朋友可以參考下2023-07-07JavaScript監(jiān)控埋點的實現(xiàn)與詳細(xì)用法
埋點(Event Tracking)是用戶行為監(jiān)控的一種技術(shù)手段,通常用于收集用戶在網(wǎng)站或應(yīng)用中的操作數(shù)據(jù),例如點擊、頁面瀏覽、滾動等,本文給大家介紹了JavaScript監(jiān)控埋點的實現(xiàn)與詳細(xì)用法,需要的朋友可以參考下2024-10-10JS實現(xiàn)兼容火狐及IE iframe onload屬性的遮罩層隱藏及顯示效果
這篇文章主要介紹了JS實現(xiàn)兼容火狐及IE iframe onload屬性的遮罩層隱藏及顯示效果,涉及javascript事件響應(yīng)及針對頁面元素屬性的動態(tài)操作相關(guān)技巧,需要的朋友可以參考下2016-08-08關(guān)于小程序優(yōu)化的一些建議(小結(jié))
這篇文章主要介紹了關(guān)于小程序優(yōu)化的一些建議(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12