您好,登錄后才能下訂單哦!
如何使用JS,在一個(gè)Number類型的數(shù)組里,查找最大(或最?。?shù)呢?
以下介紹四個(gè)方法。
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; } }
解釋:
利用一個(gè)變量result來存儲最大值。遍歷待查找的數(shù)組,如果當(dāng)前遍歷的元素大于result,就把這個(gè)元素賦值給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方法就是通過一個(gè)函數(shù),針對一個(gè)累加器(accumulator)和數(shù)組中的每一個(gè)元素,將一個(gè)數(shù)組最終減少到一個(gè)值。
reduce接受兩個(gè)參數(shù):
第一個(gè)是callback,就是那個(gè)前面提到的那個(gè)函數(shù)。它有四個(gè)參數(shù):
第二個(gè)是initialValue,是一個(gè)初值,作為第一次運(yùn)行callback函數(shù)的第一個(gè)實(shí)參。這個(gè)是可選的。這里要注意一下,如果這個(gè)參數(shù)不提供,并且應(yīng)用在一個(gè)空數(shù)組上,是會報(bào)錯(cuò)的。
那么上面代碼的意思就是,每次遍歷數(shù)組進(jìn)行比較,大的就留下來,即accumulator,并將其用作下一次和數(shù)組元素的比較。最后只留下這一個(gè)值,即最大值。
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)一步的解釋。
它接受兩個(gè)參數(shù),第一個(gè)是thisArg,第二個(gè)是argsArray。兩個(gè)都是可選的。此處簡單來說,就是使用一個(gè)函數(shù)時(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; } }
解釋:
基于上一個(gè)解法的思路,在ES6中,有一個(gè)擴(kuò)展運(yùn)算符(...),可以將一個(gè)數(shù)組中的元素拆出來,組成一個(gè)用逗號分隔的序列。剛好滿足Math.max()函數(shù)的需求。
在給大家介紹一下JS之number、Math和數(shù)組的相關(guān)知識點(diǎ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)建一個(gè)長度為0的數(shù)組。
方式2:
var 變量名= new Array(長度) 創(chuàng)建一個(gè)指定長度的數(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)建了一個(gè)長度為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ù)組元素組成一個(gè)新的數(shù)組返回?! ?arr1 = arr1.concat(arr2);
b、join使用指定的分隔符把數(shù)組中的元素拼裝成一個(gè)字符串返回。
var elements = arr1.join(",");
c、pop :移除數(shù)組中的最后一個(gè)元素并返回該元素。
d、push:將新元素添加到一個(gè)數(shù)組中,并返回?cái)?shù)組的新長度值。
arr1.push("你好");
e、reverse(); 翻轉(zhuǎn)數(shù)組的元素
f、slice指定數(shù)組 的開始索引值與結(jié)束索引值截取數(shù)組的元素,并且返回子數(shù)組。(包頭不包尾)
var subArr = arr1.slice(1,2);
g、sort排序,排序的時(shí)候一定要傳入排序的方法。(不傳時(shí)默認(rèn)是按照ASCII表排列)
arr1 = [19,1,20,5]; arr1.sort(sortNumber); //排序,排序的時(shí)候一定要傳入排序的方法。 function sortNumber(num1,num2){ return num1-num2; }
h、splice第一個(gè)參數(shù)是開始刪除元素的 索引值, 第二參數(shù)是刪除元素的個(gè)數(shù),往后的數(shù)據(jù)就是插入的元素(也可以不寫)。
arr1.splice(1,1,"張三","李四","王五");
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。