Lấy phần tử duy nhất có trong mảng
Chào các bạn nhé
Sau bao ngày tìm hiểu về string hôm nay mình chuyển chủ đế qua array tí.
Trong bài viết này mình sẽ hướng dẫn bạn tìm phần tử duy nhất có trong mảng.
- Phương pháp có sẵng
1let arrayData = [3, 4, 1, 3, 2, 4, 1, 0]; 2 3function getPhanTuDuyNhat(array) { 4 let obj = array.reduce((prevent, current) => { 5 if (current in prevent) { 6 prevent[current] = ++prevent[current]; 7 } else { 8 prevent[current] = 1; 9 } 10 return prevent; 11 }, {}); 12 13 // Đến đây 14 // obj = {0: 1, 1: 2, 2: 1, 3: 2, 4: 2} 15 16 let result = []; // Tạo biến lưu kết quả 17 18 for (let [key, val] of Object.entries(obj)) { 19 if (val === 1) { 20 // if thỏa mãn điều kiện 21 result.push(key); // thêm nó vào kết quả 22 } 23 } 24 25 // result = ['0', '2'] 26 return result; // trả kết quả về 27} 28 29console.log(getPhanTuDuyNhat(arrayData)); // ['0', '2']
Vậy là chúng ta đã làm tìm được phần tử duy nhất có trong mảng. Nhược điểm bây giờ chúng ta thấy 3 lần lặp.
Chúng ta hãy tối ưu hóa nó tiếp.
- Phương pháp tự viết
1let arrayData = [3, 4, 1, 3, 2, 4, 1, 0]; 2 3function getPhanTuDuyNhat(array) { 4 let obj = {}; // Tạo obj đếm từng key 5 let result = {}; // Tạo object lưu giá trị 6 for (let val of array) { 7 if (val in obj) { 8 obj[val] = ++obj[val]; // Nếu có trong obj thì tăng giá trị lên 1 9 delete result[val]; // Đồng thời xóa nó trong kết quả. Vì nó không phải là giá trị duy nhất 10 } else { 11 obj[val] = 1; // Thêm nó vào `obj` và gán giá trị là 1 12 result[val] = val; // Thêm nó vào `result` và gán giá trị bằng chính phần tử đó 13 } 14 } 15 return Object.values(result); // Biến nó thành `array` kết quả và trả về 16} 17 18console.log(getPhanTuDuyNhat(arrayData)); // ['0', '2']
Các bạn thấy cách giải thứ 2 nó thế nào ???. Tuy nó không hoàn hảo nhưng chạy được. Ưu diểm bây giờ là mình tận dụng vòng lặp. Cứ hạn chế lặp nhiều là cách giải sẻ tốt.
Nếu các bạn có nhiều cách giải hơn cứ mạnh dạn chia sẽ nhé.
Mình sẽ sửa lại và thêm nó vào trang web. Chúc các bạn học tập dc nhiều điều hay.
- 👌👌👌👌👌
- Master - JS
- array
- duy nhất
- mảng
- phần tử
Các bài viết liên quan
Sắp xếp các ký tự trong chuỗi theo thứ tự tăng hoặc giảm
Áp dụng nó với phương pháp có sẵng và tự viết.Giải ThuậtĐếm số lượng các ký tự Hoa có trong chuỗi
Cùng nhau rèn luyện tư duy với chuỗi nhé. Đơn giản thôi.Giải ThuậtĐếm số lượng các ký tự trùng nhau có trong chuỗi
Cùng nhau đếm nào. Trả về object nhé. Tùy tình huống triển khaiGiải ThuậtĐếm số lượng các ký tự có trong chuỗi
Giải thuật đếm các ký tự trong chuổi bằng javascriptGiải Thuật