Lấy các object có key nằm trong một mảng khác

Xin chào mọi người, mình đang gặp một bài toán này mà lý bí quá, yêu cầu đặt ra là không dùng vòng lặp ( các loại như for, foreach, while…), mọi người có ý tưởng gì không ạ ?

image_2019_10_15T09_22_58_893Z

Mình chân thành cảm ơn

Dùng map hoặc đệ quy thì sao nhỉ

4 Likes

Bạn không cho biết rõ lý do tại sao không được dùng vòng lặp nên tôi không thể trả lời chính xác. Nhưng nếu yêu cầu là không dùng các lệnh liên qua tới vòng lặp (như for, foreach, while) theo syntax thì có vài cách khác nhau. Sau đây là một ví dụ (chỉ chạy với JavaScript theo ES6):

results = objects.filter(i => keys.includes(Object.keys(i).toString()));

trong ví dụ trên, chúng ta sử dụng arrow function (hay là lambda expression) để trả về một Dictionary mới (results) từ Dictionary ban đầu (objects) sau khi filter bằng các key trong array keys do bạn định nghĩa (bạn nên tránh dùng các từ khóa đặc biệt như keys hay objects để đặt tên cho các biến - trong ví dụ trên, hàm keys trong Object.keys() trùng tên với array keys của bạn. Dù nó không ảnh hưởng đến kết quả trong trường hợp này nhưng rất dễ gây hiểu nhầm khi phân tích source code).

Thật ra trong cách dùng này, dù chúng ta không sử dụng các lệnh cụ thể có liên quan đến vòng lặp, nhưng về bản chất, nó vẫn là một cấu trúc lặp. Vì vậy, tôi không hiểu lắm vì sao bạn lại được yêu cầu không dùng vòng lặp.

4 Likes

à cũng không luôn ạ, em xem trên mạng có câu hỏi dạng này cũng không giải được nên lên nhờ mọi người chỉ ấy mà :blush:

Cảm ơn bác, bác tận tình quá, quá chi tiết và dễ hiểu, em mới mò vào javascript thôi, thấy trên mạng có bài tập này muốn thử sức mà không mần được nên lên đây hỏi mọi người, cảm ơn bác rất rất nhiều ạ.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?