Rumah  >  Artikel  >  hujung hadapan web  >  Nota kajian JavaScript: mengambil nilai maksimum dan minimum dalam kemahiran array_javascript

Nota kajian JavaScript: mengambil nilai maksimum dan minimum dalam kemahiran array_javascript

WBOY
WBOYasal
2016-05-16 15:08:291258semak imbas

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;

Mula melintasi tatasusunan, bermula dari elemen kedua dan membandingkannya dengan elemen pertama dalam urutan


Jika elemen semasa lebih besar daripada nilai maksimum semasa, tetapkan nilai elemen semasa kepada nilai maksimum


Alih ke elemen seterusnya dan teruskan langkah sebelumnya


Apabila traversal elemen tatasusunan tamat, pembolehubah ini menyimpan 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;
}
Mari kita lihat contoh:

var arr = [1,45,23,3,6,2,7,234,56];
arr.max(); // 234
Dalam contoh di atas, tatasusunan mengandungi semua nilai berangka Jadi apakah kesannya jika tatasusunan tidak mengandungi semua nilai berangka? Mari uji dahulu:

var arr = [1,45,23,3,6,2,7,234,56,'2345','a','c'];
arr.max(); // 'c'
Ini bukan hasil yang kita mahukan. (Memohon penyelesaian di sini)

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 &#63; preValue : curValue;
})
}
var arr = [1,45,23,3,6,2,7,234,56];
arr.max(); // 234
Begitu juga, anda juga boleh menggunakan kaedah yang sama untuk melaksanakan kaedah arr.mix() untuk mendapatkan nilai minimum dalam tatasusunan:

Array.prototype.min = function() {
return this.reduce(function(preValue, curValue,index,array) {
return preValue > curValue &#63; 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
Jika fungsi ini tidak mempunyai parameter, hasilnya ialah -Infiniti jika mana-mana parameter tidak boleh ditukar kepada nilai angka, hasilnya ialah NaN. Perkara yang paling penting ialah kedua-dua fungsi ini tidak boleh digunakan secara langsung untuk tatasusunan nombor. Walau bagaimanapun, terdapat beberapa kaedah yang serupa.

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
Objek Matematik juga merupakan objek dan boleh ditulis menggunakan literal objek, seperti:

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
Malah, ada cara yang lebih mudah. Kaedah berasaskan ES2015 untuk melaksanakan fungsi ini adalah dengan menggunakan operator spread:

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.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn