Viết chương trình JavaScript đếm số lần xuất hiện của một giá trị trong mảng Giải pháp mẫu Mã JavaScript Đầu ra mẫu Trình bày bằng hình ảnh Sơ đồ Bản thử trực tiếp Xem Bút javascript-basic-exercise-70-1 của w3resource [@w3resource] trên CodePen Cải thiện giải pháp mẫu này và đăng mã của bạn qua Disqus Trước. Viết chương trình JavaScript để nhóm các phần tử của một mảng dựa trên hàm đã cho và trả về số phần tử trong mỗi nhómJavaScript cơ bản [Cú pháp ES6]. Bài tập-70 có lời giải
//#Source //bit.ly/2neWfJ2
const countOccurrences = [arr, val] => arr.reduce[[a, v] => [v === val ? a + 1 : a], 0];
console.log[countOccurrences[[1, 1, 2, 1, 2, 3], 1]];
console.log[countOccurrences[[1, 1, 2, 1, 2, 3], 2]];
console.log[countOccurrences[[1, 1, 2, 1, 2, 3], 3]];
3
2
1
Kế tiếp. Viết chương trình JavaScript để tạo một bản sao sâu của một đối tượng
Mức độ khó của bài tập này là gì?
Dễ dàng trung bình khóKiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource
Theo dõi chúng tôi trên Facebook và Twitter để cập nhật thông tin mới nhất.
JavaScript. Lời khuyên trong ngày
Nhận các giá trị duy nhất của một thuộc tính đối tượng trong các mục nhập mảng
Chúng ta có thể lấy các giá trị duy nhất của một đối tượng trong các mục nhập mảng bằng cách ánh xạ các giá trị đó vào một mảng
Sau đó, chúng tôi sử dụng hàm tạo Set, rồi sử dụng toán tử trải rộng để chuyển đổi nó trở lại thành một mảng
Ví dụ, chúng ta có thể viết
const bills = [{ date: '2020-01-20', amount: '70', category: 'phone' }, { date: '2020-01-20', amount: '20', category: 'gas' }, { date: '2020-02-20', amount: '75', category: 'phone' } ]
Sau đó chúng ta có thể viết
const categories = [...new Set[bills.map[bill => bill.category]]]
Sau đó, danh mục sẽ là ["phone", "gas"]
Giới thiệu. https. //chút. ly/3mp5NgH
- Xu hướng hàng tuần
- Bài tập lập trình Java cơ bản
- Truy vấn con SQL
- Bài tập cơ sở dữ liệu Adventureworks
- Bài tập cơ bản C# Sharp
- SQL COUNT[] với sự khác biệt
- Bài tập chuỗi JavaScript
- Xác thực biểu mẫu HTML JavaScript
- Bài tập bộ sưu tập Java
- hàm SQL COUNT[]
- Tham gia bên trong SQL
- Hàm JavaScript Bài tập
- Hướng dẫn Python
- Bài tập mảng Python
- Tham gia chéo SQL
- Bài tập về mảng Sharp trong C#
Chúc mừng ngày thứ 7 trong 365 ngày lập trình. 1 tuần giảm 52 để đi. Một giải pháp JavaScript cho một hàm đếm số lần thứ gì đó xuất hiện trong một mảng. Đây có thể là một mảng phẳng hoặc một mảng các mảng
từ chối trách nhiệm. có NHIỀU cách để giải quyết vấn đề này, đây là câu trả lời mà tôi sẽ thấy hoặc sử dụng trong một cuộc phỏng vấn viết mã và sẽ chấp nhận như một câu trả lời đúng
TLDR. Giải pháp ở dưới cùng của bài viết
Vấn đề
Tạo một hàm chấp nhận một mảng và một mục và đếm số lần mục đó xuất hiện trong mảng. Đừng bỏ qua cách viết hoa, dấu chấm câu hoặc dấu cách
ví dụ
itemCounter[["hello", [["Hello", "hello"], [["Hello"]], "Hello", "world"]], "hello"]; // 2 itemCounter[[["A", "A", "A", "A", "A", "a"], ["a", "A", "A", "A", "A", "A"], ["A", "a", "A", "A", "A", "A"], ["A", "A", "A", "a", "A", "A"]], "a"]; // 4 itemCounter[[1, 2, [3], [4, 5], [4, [[6, 7], 4]]], 4]; // 3 itemCounter[[1, 2, [3, 11], [4, 5], [4, [[6, 7], 4]]], 10] // 0
Giải pháp
Hãy viết ra những gì chúng ta sẽ cần phải làm
khả năng 1
tạo một hàm chấp nhận một mảng và một mục để tìm trong mảng đó
tạo biến cho bộ đếm
làm phẳng mảng
lặp qua mảng
mỗi khi mục được tìm thấy trong mảng đó, bộ đếm sẽ tăng lên
trả lại quầy ở cuối
khả năng 2
tạo một hàm chấp nhận một mảng và một mục để tìm trong mảng đó
làm phẳng mảng
lọc mảng theo mục đã được chuyển vào
lấy độ dài của mảng đó
Giải pháp 1
Đầu tiên chúng ta cần tạo một hàm chấp nhận một mảng và một mục
const itemCounter = [array, item] => { //create a variable for a counter //flatten the array //loop through the array //every time the item is found in that array increment the counter //return the counter at the end }
Tạo một biến sẽ giữ một bộ đếm
const itemCounter = [array, item] => { let counter = 0 //flatten the array //loop through the array //every time the item is found in that array increment the counter //return the counter at the end }
Chúng ta cần làm phẳng mảng và vì chúng ta không biết có bao nhiêu mảng lồng nhau nên chúng ta sẽ vượt qua. phẳng [] Vô cực. . flat[] sẽ làm phẳng một mảng bằng số lần bạn chuyển đến nó. Vì chúng tôi không biết bao nhiêu lần nên chúng tôi sẽ vượt qua Infinity, điều này sẽ làm phẳng mảng cho đến khi nó hoàn toàn bằng phẳng
const itemCounter = [array, item] => { let counter = 0 array.flat[Infinity] //loop through the array //every time the item is found in that array increment the counter //return the counter at the end }
Chúng tôi muốn lặp qua mảng đã được làm phẳng vì vậy tôi sẽ xâu chuỗi một. forEach trên. phẳng[]. Điều này rất giống với vòng lặp for chỉ khác ở cú pháp. Để đọc thêm về nó, hãy xem trang MDN này
________số 8_______
Nếu mục mà chúng tôi hiện đang truy cập trong vòng lặp forEach khớp với mục được chuyển, chúng tôi muốn tăng bộ đếm. Nếu không, chúng tôi muốn tiếp tục vòng lặp
const itemCounter = [array, item] => { let counter = 0 array.flat[Infinity].forEach[x => { if[x == item]{ counter++ } }]; //return counter }
Cuối cùng nhưng không kém phần quan trọng, chúng ta cần trả lại quầy
const itemCounter = [array, item] => { let counter = 0 array.flat[Infinity].forEach[x => { if[x == item]{ counter++ } }]; return counter }
Giải pháp 2
Đầu tiên chúng ta cần tạo một hàm chấp nhận một mảng và một mục và làm phẳng mảng. Điều này sẽ giống như giải pháp trước đó
const itemCounter = [array, item] => { array.flat[Infinity] //filter the array by the item that was passed in //get the length of that array }
Để lọc mảng chúng ta sẽ sử dụng. lọc[]. Nếu bạn không quen với nó, bạn có thể xem trang MDN này nhưng nó tạo ra một mảng mới gồm các phần tử đáp ứng các tiêu chí trong hàm mà bạn chuyển nó
const itemCounter = [array, item] => { array.flat[Infinity].filter[currentItem => currentItem === item] //get the length of that array }
Bây giờ chúng ta chỉ cần lấy chiều dài. Tôi cũng sẽ dọn dẹp nó một chút và chúng tôi nhận được điều này
const itemCounter = [array, item] => array.flat[Infinity].filter[currentItem => currentItem == item].length;
Phần kết luận
Trong trường hợp này, hiệu suất cho mỗi là như nhau. Tôi thích giải pháp thứ hai vì nó ít mã hơn và vẫn dễ đọc nhưng cả hai giải pháp đều tốt. Dưới đây là kết quả jsbench của tôi cho những ai tò mò
Tôi hy vọng bạn đã vui vẻ với cái này. Vui lòng để lại giải pháp của bạn mà bạn đã đưa ra trong phần bình luận. Nếu bạn có bất kỳ thử thách nào bạn muốn hoàn thành, hãy để lại điều đó trong các bình luận bên dưới, bạn có thể thấy nó xuất hiện. Nếu bạn muốn nhận thử thách qua email cho bạn mỗi ngày vào buổi sáng và thông báo khi giải pháp được đăng, hãy đăng ký bên dưới