Làm cách nào để đếm số lần một phần tử xuất hiện trong một mảng JavaScript?

JavaScript. Đếm số lần xuất hiện của một giá trị trong một mảngCập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21. 51. 53 (UTC/GMT +8 giờ)

JavaScript cơ bản (Cú pháp ES6). Bài tập-70 có lời giải

Viết chương trình JavaScript đếm số lần xuất hiện của một giá trị trong mảng

  • Sử dụng mảng. nguyên mẫu. reduce() để tăng bộ đếm mỗi khi gặp giá trị cụ thể bên trong mảng

Giải pháp mẫu

Mã JavaScript

//#Source https://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));

Đầu ra mẫu

3
2
1

Trình bày bằng hình ảnh



Sơ đồ

Làm cách nào để đếm số lần một phần tử xuất hiện trong một mảng JavaScript?

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óm
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 FacebookTwitter để 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

Làm cách nào để đếm các phần tử nhất định trong mảng JavaScript?

Để đếm một số phần tử nhất định trong một mảng trong JavaScript, hãy sử dụng phương thức “filter()”, phương thức “reduce()” hoặc vòng lặp “for” truyền thống. filter() method filters the elements that match the specified element, while the reduce() method or the for loop gives the total number of occurrences of the particular element.

Làm cách nào để đếm số lần xuất hiện trong JavaScript?

Trong JavaScript, chúng ta có thể đếm số lần xuất hiện của chuỗi trong một chuỗi bằng cách đếm số lần chuỗi xuất hiện trong chuỗi . JavaScript cung cấp một hàm match(), được sử dụng để tạo ra tất cả các lần xuất hiện của một chuỗi trong một mảng.

Làm cách nào để tìm số phần tử lặp lại trong một mảng JavaScript?

Để đếm các giá trị trùng lặp, .
lặp lại mảng bằng foreach()
Thêm số lượng của từng phần tử trong một tập hợp kết hợp và thêm số lượng vào chỉ mục đó
Nếu chỉ mục phần tử đã tồn tại, hãy tăng số lượng trong mỗi lần lặp lại. Khác, khởi tạo số đếm thành 1