Hướng dẫn javascript merge two arrays without duplicates - javascript hợp nhất hai mảng mà không có bản sao

Phép lặp lại đơn hoặc hợp nhất và lặp lại nhiều đầu vào mảng. Ví dụ dưới đây.

Sử dụng es6 - đặt, cho, phá hủy

Tôi đã viết chức năng đơn giản này có nhiều đối số mảng. Làm khá giống với giải pháp ở trên nó chỉ có trường hợp sử dụng thực tế hơn. Hàm này không kết hợp các giá trị trùng lặp vào một mảng chỉ để nó có thể xóa chúng ở một giai đoạn sau.

Định nghĩa chức năng ngắn [chỉ 9 dòng]

/**
* This function merging only arrays unique values. It does not merges arrays in to array with duplicate values at any stage.
*
* @params ...args Function accept multiple array input [merges them to single array with no duplicates]
* it also can be used to filter duplicates in single array
*/
function arrayDeDuplicate[...args]{
   let set = new Set[]; // init Set object [available as of ES6]
   for[let arr of args]{ // for of loops through values
      arr.map[[value] => { // map adds each value to Set object
         set.add[value]; // set.add method adds only unique values
      }];
   }
   return [...set]; // destructuring set object back to array object
   // alternativly we culd use:  return Array.from[set];
}

Sử dụng ví dụ codepen:

// SCENARIO 
let a = [1,2,3,4,5,6];
let b = [4,5,6,7,8,9,10,10,10];
let c = [43,23,1,2,3];
let d = ['a','b','c','d'];
let e = ['b','c','d','e'];

// USEAGE
let uniqueArrayAll = arrayDeDuplicate[a, b, c, d, e];
let uniqueArraySingle = arrayDeDuplicate[b];

// OUTPUT
console.log[uniqueArrayAll]; // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 43, 23, "a", "b", "c", "d", "e"]
console.log[uniqueArraySingle]; // [4, 5, 6, 7, 8, 9, 10]

Nếu bạn đang đọc bài đăng này, bạn có thể bối rối về cách được gọi là vấn đề đơn giản, có thể biến thành những cơn ác mộng. Bất cứ ai làm việc trên JavaScript đều nhận thức được thực tế rằng các mảng cần phải được hợp nhất lúc này hay lúc khác. Bạn nhất định phải đối mặt với một tình huống mà bạn có hai hoặc nhiều mảng cần được hợp nhất. Đây là một vấn đề tầm thường có nhiều giải pháp, vì vậy, hãy để Lôi xem xét ba cách khác nhau để giải quyết vấn đề này.

Xem video YouTube của tôi cho bản demo trực tiếp:

Các trò chơi truyền thống cho vòng lặp.

Phương pháp truyền thống [và phương pháp phổ biến nhất] liên quan đến hai hoặc nhiều vòng lặp dựa trên số lượng mảng.

Mã giả để chạy cho các vòng lặp và Mảng hợp nhất:

Lặp qua từng mục trong mảng

Kiểm tra xem mục Array có được tìm thấy trong phần hợp nhất hay không. Sử dụng Index indexof [] để đánh giá nếu mục mảng có mặt.

Nếu mục mảng không có mặt, indexof [] sẽ trả về trên -1. Sau đó, hợp nhất các mục thành Merged_array.

Nếu mặt hàng mảng có mặt, indexof [] sẽ trả về vị trí của nó trong vị trí của Merged_array. Do đó, không làm gì cả.

Lặp lại các bước 1 đến 4 trên tất cả các mảng sẽ được hợp nhất.

Tính toán độ phức tạp thời gian

Để hợp nhất hai mảng sử dụng cho các vòng lặp, độ phức tạp của thời gian sẽ như sau:for loops, the time complexity would be as follows:

Lặp lại thông qua một mảng, với các mục N NBig O[n]

Để thực hiện phương pháp Indexof: Big O [[N-1]+[N-2]+[N-3],+1]: Big O [N]Big O[n]

Để thực hiện phương pháp indexof, thời gian n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n bồiBig O[n²]

Độ phức tạp về thời gian tổng thể: Big O [N²]Big O[n²]

Mật mã

let array1 = ['a','b','c']let array2 = ['c','c','d','e'];let array3 = [];for[let i=0;i

Bài Viết Liên Quan

Chủ Đề