Cho mảng 3 chiều (nested array) sau:
var theValuesIn3DArray = [75, [18, 89], [56, [97], [99]]];
Ta có thể dùng phương thức flat(Infinity) để làm phẳng mảng hoàn toàn, sau đó áp dụng Math.max() kết hợp với toán tử spread (...).
Ví dụ
var theValuesIn3DArray = [75, [18, 89], [56, [97], [99]]];
Array.prototype.findTheLargestNumberIn3dArray = function () {
return Math.max(...this.flat(Infinity));
};
console.log("Số lớn nhất trong mảng 3D là: ");
console.log(theValuesIn3DArray.findTheLargestNumberIn3dArray());
Chạy chương trình:
node fileName.js
Kết quả
Số lớn nhất trong mảng 3D là: 99
Giải thích:
flat(Infinity): Làm phẳng mảng đến độ sâu vô hạn, biến mảng lồng nhau thành mảng 1 chiều:[75, 18, 89, 56, 97, 99]....(spread): Trải các phần tử thành đối số choMath.max().Math.max(): Trả về giá trị lớn nhất.
Cách thay thế không sửa prototype:
const findMax3D = (arr) => Math.max(...arr.flat(Infinity)); console.log(findMax3D(theValuesIn3DArray)); // 99