Computer >> Máy Tính >  >> Lập trình >> Javascript

Chuyển đổi mảng có giá trị trùng lặp thành đối tượng có số lần xuất hiện lặp lại trong JavaScript

Giả sử, chúng ta có một chuỗi mảng chứa một số mục nhập trùng lặp như thế này -

const arr = ['California','Texas','Texas','Texas','New
York','Missouri','New Mexico','California'];

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy. Sau đó, hàm của chúng ta sẽ tạo một mảng đối tượng chứa một đối tượng cho mỗi mục nhập duy nhất và một thuộc tính "count" chứa số lượng của nó trong mảng ban đầu.

Do đó, kết quả cuối cùng cho mảng trên sẽ giống như thế này -

const output = [
   {'name':'California', 'count':2},
   {'name':'Texas', 'count':3},
   {'name':'New York', 'count':1},
   {'name':'Missouri', 'count':1},
   {'name':'New Mexico', 'count':1},
];

Ví dụ

Mã cho điều này sẽ là -

const arr = ['California','Texas','Texas','Texas','New York','Missouri','New Mexico','California'];
const findOccurrences = (arr = []) => {
   const res = [];
   arr.forEach(el => {
      const index = res.findIndex(obj => {
         return obj['name'] === el;
      });
      if(index === -1){
         res.push({
            "name": el,
            "count": 1
         })
      }
      else{
         res[index]["count"]++;
      };
   });
   return res;
};
console.log(findOccurrences(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   { name: 'California', count: 2 },
   { name: 'Texas', count: 3 },
   { name: 'New York', count: 1 },
   { name: 'Missouri', count: 1 },
   { name: 'New Mexico', count: 1 }
]