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

Tìm các giá trị chuỗi duy nhất và lớn nhất từ ​​một mảng trong JavaScript

Giả sử, chúng ta có một loạt các đối tượng như thế này -

Ví dụ

const arr = [
   {text:'use'},
   {text: 'secur'},
   {text: 'form'},
   {text: 'user'},
   {text: 'users'},
   {text: 'form'},
   {text: 'secur'},
   {text: 'sec'},
   {text: 'users'},
   {text: 'secu'},
   {text: 'secur'},
   {text: 'for'},
   {text: 'form'}
]

Công việc của chúng ta là viết một hàm nhận trong mảng này và một số n và hàm phải trả về một mảng n đối tượng có giá trị chuỗi dài nhất cho khóa văn bản và tất cả các đối tượng phải có một giá trị duy nhất cho khóa văn bản. Nếu không tồn tại n đối tượng duy nhất, thì chúng ta phải trả về tất cả các đối tượng duy nhất.

Do đó, hãy viết mã cho chức năng này -

Ví dụ

const arr = [
   {text: 'use'},
   {text: 'secur'},
   {text: 'form'},
   {text: 'user'},
   {text: 'users'},
   {text: 'form'},
   {text: 'secur'},
   {text: 'sec'},
   {text: 'users'},
   {text: 'secu'},
   {text: 'secur'},
   {text: 'for'},
   {text: 'form'}
];
const sorter = (a, b) => {
   return b.text.length - a.text.length;
}
const longestUnique = (arr, num) => {
   const copy = arr.slice();
   copy.sort(sorter);
   const map = new Map();
   const uniqueCopy = copy.filter(el => {
      const exists = map.get(el.text);
      if(exists){
         return false;
      };
      map.set(el.text, 1);
      return true;
   });
   return uniqueCopy.splice(0, num);
}
console.log(longestUnique(arr, 4));
console.log(longestUnique(arr, 12));

Đầu ra

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

[
   { text: 'secur' },
   { text: 'users' },
   { text: 'form' },
   { text: 'user' }
]
[
   { text: 'secur' },
   { text: 'users' },
   { text: 'form' },
   { text: 'user' },
   { text: 'secu' },
   { text: 'use' },
   { text: 'sec' },
   { text: 'for' }
]