數組3,實戰
阿新 • • 發佈:2018-10-13
java .proto 回憶 call targe logs ons rst back
取數組中最大值
可以先把思路理一下:
- 將數組中第一個元素賦值給一個變量,並且把這個變量作為最大值;
- 開始遍歷數組,從第二個元素開始依次和第一個元素進行比較
- 如果當前的元素大於當前的最大值,就把當前的元素值賦值給最大值
- 移動到下一個元素,繼續按前面一步操作
- 當數組元素遍歷結束時,這個變量存儲的就是最大值
取出數組當中的最大值且在數組中的位置:
<script> var array = [3,1,99,-66,55] // 將數組第一個元素的值賦給arrayFirst var arrayFirst = [0]; // 使用for 循環從數組第一個值開始做遍歷for (var index = 0; index < array.length; index++) { // 如果元素當前值大於arrayFirst,就把這個當前值賦值給arrayFirst if(arrayFirst<array[index]){ arrayFirst=array[index] } } console.log(arrayFirst);//99 console.log(array.indexOf(arrayFirst));//2 </script>
取出最大值:for
循環性能要比forEach()
差,那可以將上面的方法改成forEach()
方法:
<script> Array.prototype.max = function () { var max = this[0]; this.forEach(function (ele, index, arr) { if (ele > max) { max = ele; } })return max; } var arr = [1, 45, 23, 3, 6, 2, 7, 234, 56]; arr.max(); // 234 console.log(arr.max())//234 </script>
取數組中最小值
<script> Array.prototype.min = function () { var min = this[0]; this.forEach(function (ele, index, arr) { if (ele < min) { min = ele; } }) return min; } var arr = [9, 45, 23, 3, 6, 2, 7, 234, 56]; arr.min(); // 2 console.log(arr.min());//2 </script>
其他方法
除了上面的方案,還可以有其他方法,比如使用數組的reduce()
方法。回憶前面的學過的知識,reduce()
方法可以接收一個回調函數callbackfn
,可以在這個回調函數中拿數組中的初始值(preValue
)與數組中當前被處理的數組項(curValue
)做比較,如果preValue
大於curValue
值返回preValue
,反之返回curValue
值,依此類推取出數組中最大值:
<script> Array.prototype.max = function () { return this.reduce(function (preValue, curValue, index, array) { return preValue > curValue ? preValue : curValue; }) } var arr = [1, 45, 23, 3, 6, 2, 7, 234, 56]; arr.max(); // 234 console.log(arr.max())// 234 </script>
Function.prototype.apply()
讓你可以使用提供的this
與參數組與的數組來調用參數。
<script> // 取出數組中最大值 Array.max = function (array) { return Math.max.apply(Math, array); }; // 取出數組中最小值 Array.min = function (array) { return Math.min.apply(Math, array); }; var arr = [1, 45, 23, 3, 6, 2, 7, 234, 56]; Array.max(arr); // 234 Array.min(arr); // 1 console.log(Array.max(arr))// 234 console.log(Array.min(arr))// 1 </script>
Math
對象也是一個對象,可以使用對象的字面量來寫,如:
<script> Array.prototype.max = function () { return Math.max.apply({}, this); } Array.prototype.min = function () { return Math.min.apply({}, this); } var arr = [1, 45, 23, 3, 6, 2, 7, 234, 56]; arr.max(); // 234 arr.min(); // 1 console.log(arr.max());// 234 console.log(arr.min())// 1 </script>
附加參考網址:
https://www.cnblogs.com/jiechen/p/5521490.html
http://www.w3cplus.com/javascript/array-part-8.html
數組3,實戰