Đoạn mã sau có các chi tiết nhân viên
Mục tiêu của tôi: để có được một mảng mới với tên nhân viên có vai trò công việc là Thư ký
const employees = [
{name: "ABC", jobrole: "Officer", salary: "$200", dob: "10-05-1990"},
{name: "DEF", jobrole: "Clerk", salary: "$100", dob: "12-08-1992"},
{name: "GHI", jobrole: "Manager", salary: "$300", dob: "01-01-1992"},
{name: "JKL", jobrole: "Clerk", salary: "$100", dob: "12-03-1991"},
{name: "MNO", jobrole: "Officer", salary: "$200", dob: "11-09-1991"},
]
console.log("Ex: Using map method to create a new Array of all the Employee names")
const mapEmployeeNames = employees.map(function(employee){
if(employee.jobrole === "Clerk"){
return employee.name
}
})
console.log(mapEmployeeNames)
Đầu ra của đoạn mã trên là
Mảng(5) [ undefined, “DEF”, undefined, “JKL”, undefined ]
không thể có một mảng chỉ có tên nhân viên đã chọn (không có tên không xác định)?
map
trả về một mảng mới có cùng kích thước, bạn có thể ghép nó với filter
nếu bạn muốn thay đổi các phần tử mảng, đồng thời giảm số lượng
1 lượt thích
Xin cảm ơn vì câu trả lời nhanh của bạn… Vì vậy, không thể chỉ xuất một chỉ mục mảng cụ thể (ví dụ như Jobrole trong ví dụ này) chỉ sử dụng bản đồ phải không? bản đồ chỉ trả về toàn bộ mảng dưới dạng một mảng mới được sửa đổi hoặc chưa sửa đổi… hãy sửa lỗi cho tôi nếu tôi sai…
nếu bạn chỉ muốn một chỉ mục duy nhất, có thể bạn muốn sử dụng một cái gì đó như find
hoặc findIndex
thay thế?
map
trả về một mảng mới có cùng kích thước
2 lượt thích
Mã này ở đây dường như làm những gì bạn muốn:
let arr = [];
employees.forEach(function(a){
if(a.jobrole == 'Clerk') {
arr.push(a.name);
}
})
Bây giờ, ở đây tôi đang tạo một chức năng mà bạn vượt qua:
- thông tin bạn muốn nhận (
name, jobrole, salary, dob
) - tiêu chí tìm kiếm bạn muốn tìm kiếm (
name, jobrole, salary, dob
) - giá trị mà bạn muốn đối sánh (ví dụ: “Clerk”)
Và nó trả về tìm kiếm của bạn trong một mảng
function searchEmployees(search, criteria, value) {
let arr = [];
employees.forEach(function(a){
if (a[criteria] == value) {
arr.push(a[search]);
}
});
return arr;
}
Bây giờ bạn có thể thử:
searchEmployees ("name", "jobrole", "Clerk"); // Gets all names whose jobrole is 'Clerk'
searchEmployees ("salary", "jobrole", "Officer"); // Gets the salaries of the Officers
searchEmployees ("dob", "salary", "$200"); // Gets dob of people who make $200
1 lượt thích
Chính xác điều này tôi muốn biết rằng bản đồ một mình không thể trả về các giá trị đã chọn…