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

Tôi đang cố gắng hợp nhất 2 đối tượng với nhau, tuy nhiên có khả năng cho x số vật phẩm trùng lặp. Ví dụ, tôi đã có lịch sử và tôi muốn thêm lịch sử vào đó. Bạn có thể thấy có những bản sao

Dữ liệu mẫu

var historyExisting =  { 
     '1505845390000': 295426,
     '1505757979000': 4115911,
     '1505677767000': 4033384,
     '1505675472000': 4033384,
     '1505591090000': 3943956
}

var historyNew = { 
     '1505675472000': 4033384,
     '1505591090000': 3943956,
     '1505502071000': 3848963,
     '1505499910000': 3848963,
     '1505499894000': 3848963
    }

Kết quả mong muốn

var history = {
     '1505845390000': 295426,
     '1505757979000': 4115911,
     '1505677767000': 4033384,
     '1505675472000': 4033384,
     '1505591090000': 3943956,
     '1505502071000': 3848963,
     '1505499910000': 3848963,
     '1505499894000': 3848963
}

Như bạn có thể thấy, kết quả vẫn được giữ theo thứ tự dấu thời gian, nhưng bất kỳ sự trùng lặp nào đã được xóa. Tôi đã cố gắng để có được khóa/giá trị mục cuối cùng trong lịch sử, tìm thấy rằng trong lịch sử, hãy xóa bất kỳ mục nào trước đó và sau đó hợp nhất chúng nhưng nó có vẻ vô cùng vụng về.

Đây là phía máy chủ trong nút, vì vậy không phụ thuộc vào trình duyệt.

Bất kỳ đề xuất?

var value = {abc: "zzz", def: "456", ghi: {jkl: "yyy", mno: "012"}} ;.merging two large arrays without duplicates. My first reaction was to write a reduce function that initiated the accumulator, looped every element and checked whether it was already in the array:

Làm cách nào để kết hợp hai đối tượng JavaScript?0.2749999985098839 milliseconds.

Để hợp nhất hai đối tượng trong JavaScript, bạn có thể sử dụng toán tử lây lan .... Toán tử lây lan tạo ra một đối tượng mới với tất cả các thuộc tính từ đối tượng thứ nhất và thứ hai. Nếu có hai thuộc tính có cùng tên, thuộc tính từ đối tượng thứ hai sẽ thắng.improve the performance a little more, and ended up with a few solutions.

Làm cách nào để hợp nhất hai mảng mà không có sự trùng lặp?

5 cách hợp nhất hai mảng và loại bỏ các bản sao trong JavaScript.performance.now[].

Hợp nhất các mảng và các mục khử trùng lặp bằng cách sử dụng Concat [] và Filter [].

Hợp nhất mảng và các mục khử trùng lặp bằng toán tử tập hợp và lan truyền ..initialize an empty result array that contains the result items, create a loop for each array that has to be merged, and store the current element in the result array if it is not present. The presence is checked using indexOf that will return -1 if not.

Hợp nhất các mảng và các mục khử trùng lặp bằng cách sử dụng set và concat [].0.41500001680105925 milliseconds.

Hợp nhất các mảng và các mục khử trùng lặp bằng cách sử dụng trong khi Loop và Concat [].

Vài ngày trước tôi đã viết một mã liên quan đến việc hợp nhất hai mảng lớn mà không có sự trùng lặp. Phản ứng đầu tiên của tôi là viết một chức năng giảm khởi tạo bộ tích lũy, lặp lại mọi yếu tố và kiểm tra xem nó đã có trong mảng:merge the two input arrays without removing the duplicates with .concat[] and then loop again through the result array and remove duplicates using indexOf.

Tốc độ hiệu suất: 0,274999985098839 mili giây.0.5300000193528831 milliseconds.

Giải pháp này hoạt động tốt cho tôi, nhưng tôi tự hỏi liệu tôi có thể cải thiện hiệu suất hơn một chút không, và kết thúc với một vài giải pháp.

Đối với mục đích thử nghiệm, mỗi phương thức được mô tả sử dụng cùng một mảng:the reduce method at the beginning still has the better performance. Between the last two solutions there is no significant difference in complexity and execution speed, but the second is cleaner and easier to read. We can go a step further and take into account the ES6 Set feature, which takes all values from an iterable object, in our case an array, but since every element in a set must be unique in the collection, it skips the duplicates without any effort for us.

Khi tạo ra một tập hợp, hãy nhớ rằng NULL được đối xử như không xác định và đó là một khái niệm khác với một mảng: một bộ là một bộ sưu tập khóa của Hồi

Đây là mã:

Tốc độ hiệu suất: 0.1349998021870852 mili giây.0.13499998021870852 milliseconds.

Vì chúng tôi không muốn kết quả là một bộ mới, chúng tôi sẽ phá hủy nó thành một mảng.

Sự kết luận

Giải pháp cuối cùng là những gì tôi đang tìm kiếm, nó là dễ đọc nhất và nó có độ phức tạp thấp nhất, mang lại một hiệu suất tuyệt vời so với hai người kia. Cuối cùng tôi đã đưa đoạn mã đó vào ứng dụng của mình để trừu tượng hóa nó vào một chức năng mới. Cảm ơn, tôi hy vọng điều này đủ hữu ích;], it is the most readable and it has the lowest complexity, which brings a great performance compared to the other two. I ended up bringing that piece of code into my application abstracting it into a new function. Thanks, I hope this was helpful enough ;]

Kết hợp 2 mảng với các đối tượng ”và loại bỏ đối tượng sao chép javaScript với các ví dụ mã

Chúng tôi sẽ sử dụng lập trình trong bài học này để cố gắng giải quyết các mảng 2 kết hợp với các đối tượng, và xóa đối tượng sao chép câu đố JavaScript. Điều này được thể hiện bằng mã sau.

var merged = [...initialData, ...newData.filter[d => !ids.has[d.ID]]];

Có một số cách tiếp cận khác nhau mà người ta có thể thực hiện để giải quyết cùng một vấn đề kết hợp 2 mảng với các đối tượng, và loại bỏ các bản sao đối tượng JavaScript. Các đoạn sau đây sẽ kiểm tra các giải pháp tiềm năng khác nhau khác nhau.

// Join Without Dupes.
const joinWithoutDupes = [A, B] => {
  const a = new Set[A.map[x => x.item]]
  const b = new Set[B.map[x => x.item]]
  return [...A.filter[x => !b.has[x.item]], ...B.filter[x => !a.has[x.item]]]
}

// Proof.
const output = joinWithoutDupes[[{item:"apple",description: "lorem"},{item:"peach",description: "impsum"}], [{item:"apple", description: "dolor"},{item:"grape", description: "enum"}]]
console.log[output]

Bằng cách kiểm tra các trường hợp trong thế giới thực khác nhau, chúng tôi đã chỉ ra cách khắc phục các mảng kết hợp 2 mảng với các đối tượng và loại bỏ các bản sao đối tượng Bug JavaScript.

Làm thế nào hợp nhất hai mảng và loại bỏ các bản sao?

5 cách hợp nhất hai mảng và loại bỏ các bản sao trong JavaScript

  • Hợp nhất các mảng và các mục khử trùng lặp bằng cách sử dụng Concat [] và Filter []
  • Hợp nhất mảng và các mục khử trùng lặp bằng toán tử tập hợp và lan truyền.
  • Hợp nhất các mảng và các mục khử trùng lặp bằng cách sử dụng set và concat []
  • Hợp nhất các mảng và các mục khử trùng lặp bằng cách sử dụng trong khi Loop và Concat []

Làm thế nào để bạn loại bỏ các đối tượng trùng lặp khỏi mảng các đối tượng trong JS?

Để loại bỏ các bản sao khỏi một mảng các đối tượng: sử dụng mảng. Phương thức bộ lọc [] để lọc mảng các đối tượng. Chỉ bao gồm các đối tượng có ID duy nhất trong mảng mới.25-JUL-2022

Làm thế nào tôi có thể hợp nhất hai mảng trong JavaScript?

Phương thức Concat [] Concatenates [tham gia] hai hoặc nhiều mảng. Phương thức Concat [] trả về một mảng mới, chứa các mảng đã tham gia. Phương thức Concat [] không thay đổi các mảng hiện có.

Làm cách nào để hợp nhất hai mảng trong TypeScript mà không sao chép?

Concat [] có thể được sử dụng để hợp nhất nhiều mảng với nhau. Nhưng, nó không loại bỏ các bản sao. Filter [] được sử dụng để xác định xem một mục có mặt trong Merged_Array hay không.10-JUL-2020

Làm thế nào để bạn loại bỏ các bản sao khỏi hai mảng của các đối tượng?

JavaScript loại bỏ trùng lặp trong hai mảng

  • mảng1 = mảng1. bộ lọc [function [val] {
  • trả về mảng2. indexof [val] == -1;
  • }];
  • // Hoặc, với sự sẵn có của ES6:
  • mảng1 = mảng1. bộ lọc [val =>! mảng2. Bao gồm [val]];

mảng1 = mảng1. bộ lọc [val =>! mảng2. Bao gồm [val]];

Làm thế nào để bạn kết hợp hai mảng mà không có giá trị trùng lặp trong Java?

  • Làm thế nào để hợp nhất hai mảng thành một mảng được sắp xếp mà không sao chép trong Java?
  • Bước 1: Hợp nhất hai mảng. Đặt Arraya và Arrayb là hai mảng đầu vào.
  • Bước 2: Loại bỏ các bản sao khỏi mảng hợp nhất. Trong bước thứ hai, chúng tôi loại bỏ các phần tử trùng lặp khỏi MergedArray.

Bước 3: Sắp xếp mảng kết quả.

Làm thế nào để bạn loại bỏ một đối tượng khỏi một mảng các đối tượng?

  • Để xóa một đối tượng khỏi một mảng trong JavaScript,
  • pop [] - phương thức pop [] loại bỏ từ cuối một mảng.
  • splice [] - Phương thức splice [] xóa khỏi một chỉ mục mảng cụ thể.

Shift [] - Phương thức Shift [] loại bỏ từ đầu một mảng.

Hàm nào loại bỏ các giá trị trùng lặp khỏi một mảng?

Trả lời: Sử dụng phương thức indexof [] Bạn có thể sử dụng phương thức indexof [] trong liên hợp với push [] Xóa các giá trị trùng lặp khỏi một mảng hoặc nhận tất cả các giá trị duy nhất từ ​​một mảng trong javascript.

Approach:

  • Làm cách nào để loại bỏ các bản sao khỏi danh sách?
  • Nhận danh sách mảng với các giá trị trùng lặp.
  • Tạo một danh sách mới từ ArrayList này.
  • Sử dụng luồng []. Phương thức khác biệt [] trả về luồng đối tượng khác biệt.

Chuyển đổi luồng đối tượng này thành danh sách.

Làm thế nào để bạn hợp nhất mảng?

Làm thế nào để bạn hợp nhất các mảng của các đối tượng mà không có các bản sao trong JavaScript?

Trả lời: Sử dụng phương thức indexof [] Bạn có thể sử dụng phương thức indexof [] trong liên hợp với push [] Xóa các giá trị trùng lặp khỏi một mảng hoặc nhận tất cả các giá trị duy nhất từ ​​một mảng trong javascript.Use the indexOf[] Method You can use the indexOf[] method in conjugation with the push[] remove the duplicate values from an array or get all unique values from an array in JavaScript.

Làm thế nào tôi có thể hợp nhất hai đối tượng mà không ghi đè?

Hợp nhất hai đối tượng mà không ghi đè..
var mặc định = {abc: "123", def: "456", ghi: {jkl: "789", mno: "012"}} ;.
var value = {abc: "zzz", ghi: {jkl: "yyy",}} ;.
var value = {abc: "zzz", def: "456", ghi: {jkl: "yyy", mno: "012"}} ;.

Làm cách nào để kết hợp hai đối tượng JavaScript?

Để hợp nhất hai đối tượng trong JavaScript, bạn có thể sử dụng toán tử lây lan ....Toán tử lây lan tạo ra một đối tượng mới với tất cả các thuộc tính từ đối tượng thứ nhất và thứ hai.Nếu có hai thuộc tính có cùng tên, thuộc tính từ đối tượng thứ hai sẽ thắng.use the spread ... operator. The spread operator creates a new object with all the properties from the first and second object. If there's two properties with the same name, the property from the second object wins out.

Làm cách nào để hợp nhất hai mảng mà không có sự trùng lặp?

5 cách hợp nhất hai mảng và loại bỏ các bản sao trong JavaScript..
Hợp nhất các mảng và các mục khử trùng lặp bằng cách sử dụng Concat [] và Filter [].
Hợp nhất mảng và các mục khử trùng lặp bằng toán tử tập hợp và lan truyền ..
Hợp nhất các mảng và các mục khử trùng lặp bằng cách sử dụng set và concat [].
Hợp nhất các mảng và các mục khử trùng lặp bằng cách sử dụng trong khi Loop và Concat [].

Bài Viết Liên Quan

Chủ Đề