Bạn có thể Kết cho nó trong một mảng với phím mảng/giá trị .
Làm thế nào nó hoạt động
let jhonKey = ([...people].find(([, v]) => v === 'jhon') || [])[0];
Parts:
[...people]
Nó hoạt động với một mảng, nơi các giá trị được phát ra từ Map
dụ bằng spread syntax ...
mà gây nên các Map.prototype[@@iterator]()
iterator cho kết quả tương tự (vì nó là cùng chức năng) như Map#entries
.
[...people].find(([, v]) => v === 'jhon')
Đối với việc tìm kiếm một giá trị trong một mảng, Array#find
có ích, bởi vì nó sẽ trả về phần tử đầu tiên, trên đó gọi lại trả về giá trị truthy.
([, v]) => v === 'jhon'
^^^^^
Danh sách tham số của callback chứa một destructuring assignment và chỉ mất phần tử thứ hai của một mảng, bởi vì đó là giá trị cho việc kiểm tra bên trong của hàm.
([...people].find(([, v]) => v === 'jhon') || [])[0]
Nếu một giá trị được tìm thấy, đó là một mảng, hoặc nếu không có yếu tố được tìm thấy, đó là undefined
và hạch toán như một giá trị falsy, sau đó một logical OR ||
được sử dụng như nhà điều hành mặc định để có được một mảng trống rỗng, bởi vì kết quả là nó sẽ trả về phần tử đầu tiên của mảng hoặc undefined
, nếu không tìm thấy.
let jhonKey = ([...people].find(([, v]) => v === 'jhon') || [])[0];
Cuối cùng, kết quả được chỉ định.
Sau đó, tại sao bạn lưu trữ nhầm vòng? :-P – Bergi