Bacaan yang disyorkan: Nota kajian JavaScript: Menambah, memadam, mengubah suai dan menyemak tatasusunan
Kaedah Jumlah Tatasusunan Nota Kajian JavaScript
Nota Kajian JavaScript Susunan Rawak Isih
Dalam perniagaan sebenar, kadangkala perlu mendapatkan nilai maksimum atau minimum dalam tatasusunan. Walau bagaimanapun, kaedah seperti arr.max() dan arr.min() tidak disediakan dalam tatasusunan. Jadi adakah mungkin untuk melaksanakan kaedah seperti ini dengan cara lain? Jadi hari ini kita akan menyusun beberapa kaedah untuk mengekstrak nilai maksimum dan minimum dalam tatasusunan.
Dapatkan nilai maksimum dalam tatasusunan
Anda boleh memikirkannya dahulu:
Tetapkan elemen pertama dalam tatasusunan kepada pembolehubah dan gunakan pembolehubah ini sebagai nilai maksimum;
Kod adalah seperti berikut:
Array.prototype.max = function () { // 将数组第一个元素的值赋给max var max = this[0]; // 使用for 循环从数组第一个值开始做遍历 for (var i = 1; i < this.length; i++) { // 如果元素当前值大于max,就把这个当前值赋值给max if (this[i] > max) { max = this[i]; } } // 返回最大的值 return max; }
var arr = [1,45,23,3,6,2,7,234,56]; arr.max(); // 234
var arr = [1,45,23,3,6,2,7,234,56,'2345','a','c']; arr.max(); // 'c'
Melalui pembelajaran suatu ketika dahulu, kita semua tahu bahawa prestasi for loop adalah lebih teruk daripada forEach(), maka anda boleh menukar kaedah di atas kepada kaedah forEach():
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
Dapatkan nilai minimum dalam tatasusunan
Sama seperti idea untuk mendapatkan nilai maksimum, kita boleh melaksanakan kaedah arr.min() dengan mudah untuk mendapatkan nilai minimum dalam tatasusunan:
Array.prototype.min = function () { var min = this[0]; this.forEach(function(ele, index,arr) { if(ele < min) { min = ele; } }) return min; } var arr = [1,45,23,3,6,2,7,234,56]; arr.min(); // 1
Kaedah lain
Selain penyelesaian di atas, terdapat kaedah lain, seperti menggunakan kaedah reduce() tatasusunan. Ingat kembali pengetahuan yang dipelajari sebelum ini, kaedah reduce() boleh menerima panggilan balik fungsi panggilan balik ini, nilai awal dalam tatasusunan (preValue) boleh dibandingkan dengan item tatasusunan yang sedang diproses (curValue) dalam tatasusunan preValue lebih besar daripada curValue, kembalikan preValue, sebaliknya kembalikan curValue dan seterusnya untuk mendapatkan nilai maksimum dalam tatasusunan:
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
Array.prototype.min = function() { return this.reduce(function(preValue, curValue,index,array) { return preValue > curValue ? curValue : preValue; }) } var arr = [1,45,23,3,6,2,7,234,56]; arr.min(); // 1
Kaedah Math.max() dan Math.min() terbina dalam
Untuk tatasusunan angka semata-mata, anda boleh menggunakan fungsi terbina dalam kaedah Math.max() dan Math.min() dalam JavaScript. Gunakan dua fungsi terbina dalam ini untuk mencari nilai maksimum dan tertinggi dalam tatasusunan masing-masing. Sebelum menggunakan dua fungsi terbina dalam ini untuk mendapatkan nilai maksimum dan minimum tatasusunan, pelajari dahulu fungsi Math.max() dan Math.min().
Math.max()
Fungsi Math.max() mengembalikan nilai maksimum dalam set nombor.
Math.max(1,32,45,31,3442,4); // 3442 Math.max(10, 20); // 20 Math.max(-10, -20); // -10 Math.max(-10, 20); // 20
Math.min()
Fungsi Math.min() hanyalah bertentangan dengan fungsi Math.max(), yang mengembalikan nilai minimum dalam set nombor:
Math.min(10,20); //10 Math.min(-10,-20); //-20 Math.min(-10,20); //-10 Math.min(1,32,45,31,3442,4); //1
Function.prototype.apply() membolehkan anda memanggil parameter menggunakan tatasusunan ini dan parameter yang disediakan.
// 取出数组中最大值 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
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
var numbers = [1, 2, 3, 4]; Math.max(...numbers) // 4 Math.min(...numbers) // 1
Operator ini menyebabkan nilai dalam tatasusunan dikembangkan di lokasi panggilan fungsi.
Ringkasan
Artikel ini meringkaskan beberapa kaedah untuk mengekstrak nilai maksimum dan minimum daripada tatasusunan. Kaedah ini hanya untuk tatasusunan berangka, tetapi apabila tatasusunan mengandungi jenis data lain, cara hanya mengekstrak nilai terbesar dan nilai terkecil (jika anda tahu cara melaksanakannya, sila berikan saya nasihat). Antara kaedah ini, menggunakan fungsi terbina dalam JavaScript Math.max() dan Math.min() bersama-sama dengan Function.prototype.apply() boleh mendapatkan semula nilai maksimum dan minimum dalam tatasusunan dengan mudah. Sudah tentu, kaedah paling mudah ialah menggunakan operator paparan dalam ES2015.
Ini semua tentang kaedah mendapatkan nilai maksimum dan minimum dalam tatasusunan dalam nota kajian JavaScript Jika anda mempunyai penyelesaian yang lebih baik, saya harap anda boleh berkongsi dengan kami dalam ulasan di bawah.