您好,登錄后才能下訂單哦!
如何使用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('The parameter arr is not an array'); 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('The parameter arr is not an array'); return; } }
解釋:
reduce方法就是通過一個函數,針對一個累加器(accumulator)和數組中的每一個元素,將一個數組最終減少到一個值。
reduce接受兩個參數:
第一個是callback,就是那個前面提到的那個函數。它有四個參數:
第二個是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('The parameter arr is not an array'); 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('The parameter arr is not an array'); 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,"張三","李四","王五");
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。