Saya melihat jawaban seperti ini untuk mendapatkan angka terbesar dalam array,

var arr = [1, 2, 3];
var max = Math.max(...arr);

Tapi bagaimana dengan melakukan ini untuk array objek, yang masing-masing memiliki bidang angka, kira-kira seperti ini

class test {
   number: x
   other_fields
}

var arr = [test1, test2, test3];
var max = Math.max(...arr);

2
sf8193 1 Maret 2020, 05:18

1 menjawab

Jawaban Terbaik

Gunakan .map untuk mengubah larik objek menjadi larik angka terlebih dahulu:

var max = Math.max(
  ...arr.map(obj => obj.number)
);
const obj1 = {
   number: 2,
   prop: 'val'
};
const obj2 = {
   number: 2,
   prop: 'val'
};

var arr = [obj1, obj2];
var max = Math.max(
  ...arr.map(obj => obj.number)
);
console.log(max);

Jika Anda membutuhkan objek dan bukan hanya nomornya, gunakan reduce sebagai gantinya:

const obj1 = {
   number: 2,
   prop: 'val'
};
const obj2 = {
   number: 2,
   prop: 'val'
};

var arr = [obj1, obj2];
const largestObj = arr.reduce((a, obj) => a.number > obj.number ? a : obj);
console.log(largestObj);
5
CertainPerformance 1 Maret 2020, 02:23