So sánh hai mảng javascript es6

Trước tiên, trong đoạn mã trên, chúng tôi đang xâu chuỗi mảng1 với phương thức forEach[] trả lại cho chúng tôi từng phần tử trong mảng1 ở cuối, chúng tôi sẽ trả về chuỗi mảng thứ hai với phương thức forEach[] nó trả lại cho chúng tôi các phần tử trong mảng thứ hai, sau đó là e2 . Nếu điều gì đó đúng, chúng tôi bắt đầu nhập vào khối if

Xin chào các bạn, hôm nay tôi mang đến cho các bạn một số phép thuật ES6 cho các thuật toán Array phổ biến mà đôi khi chúng ta nghĩ quá nhiều và chúng có một giải pháp đơn giản thực sự dễ dàng bằng cách sử dụng các hàm bậc cao như bộ lọc và lý thuyết Tập hợp

Lý thuyết tập hợp là gì trên thế giới? . Chúng tôi không đề cập đến các phương thức giống nhau cho Bộ Javascript [Mảng và Bộ là các cấu trúc dữ liệu khác nhau, bạn có thể xem bài viết này để hiểu rõ hơn https. //vừa phải. com/front-end-hacking/es6-set-vs-array-what-and-when-efc055655e1a] nhưng vì Mảng là tập hợp dữ liệu đồng nhất nên sẽ có cùng nguyên tắc

Trong bài viết này, bạn sẽ học cách triển khai các tính năng này

Mã số

Đối với tất cả các ví dụ, chúng tôi có hai mảng, A

let difference = arrA.filter[x => !arrB.includes[x]];
1 &
let difference = arrA.filter[x => !arrB.includes[x]];
2, chúng tôi cần một mảng thứ ba gọi là C với kết quả của hoạt động. Hãy sử dụng một số Biểu đồ Venn để giúp chúng ta hình dung các khái niệm

Ngã tư

Sơ đồ Venn cho giao của hai tập hợp

Phần giao nhau sẽ cho chúng ta các phần tử mà cả hai mảng có chung, trong trường hợp này, kết quả phải là

let difference = arrA.filter[x => !arrB.includes[x]];
3

let intersection = arrA.filter[x => arrB.includes[x]];

Sự khác biệt

Biểu đồ Venn cho hiệu của hai tập hợp

Sự khác biệt sẽ xuất ra các phần tử từ mảng A không có trong mảng B. Kết quả sẽ là

let difference = arrA.filter[x => !arrB.includes[x]];
4

let difference = arrA.filter[x => !arrB.includes[x]];

Chênh lệch đối xứng

Biểu đồ Venn cho hiệu đối xứng của hai tập hợp

Trong trường hợp này, bạn sẽ nhận được một mảng chứa tất cả các phần tử của mảng A không có trong mảng B và ngược lại, vì vậy kết quả sẽ là

let difference = arrA.filter[x => !arrB.includes[x]];
0

let difference = arrA
.filter[x => !arrB.includes[x]]
.concat[arrB.filter[x => !arrA.includes[x]]];

liên hiệp

Biểu đồ Venn cho hợp của hai tập hợp

Phép hợp phải là đơn giản nhất trong số chúng, cuối cùng, kết quả phải là tất cả các phần tử từ A, tất cả từ B hoặc cả hai như thế này

let difference = arrA.filter[x => !arrB.includes[x]];
1

let union = [...arrA, ...arrB];

Tuy nhiên, có một vấn đề là nếu chúng ta sử dụng toán tử trải rộng, chúng ta sẽ nhận được các phần tử trùng lặp, vì vậy về mặt lý thuyết, đó không phải là một phép hợp. Để làm điều này, chúng tôi có thể sử dụng Bộ để giúp chúng tôi

let union = [...new Set[[...arrA, ...arrB]];

Tại sao? . Vì vậy, bạn sẽ không có bản sao mà sẽ phải sử dụng Set Object

Vì vậy, ngay bây giờ, ES6 thuần vanilla có thể cạnh tranh trực tiếp với các triển khai khác như jQuery, lodash hoặc gạch dưới và bạn có thể giảm mã từ các triển khai này

function symmetricDifference[a1, a2] {
var result = [];
for [var i = 0; i < a1.length; i++] {
if [a2.indexOf[a1[i]] === -1] {
result.push[a1[i]];
}
}
for [i = 0; i < a2.length; i++] {
if [a1.indexOf[a2[i]] === -1] {
result.push[a2[i]];
}
}
return result;
}

đến một hoặc hai dòng hoặc mã. Khá hữu ích Uh?

Nếu bạn có câu hỏi hoặc ý tưởng khác để giải quyết vấn đề của Liên minh, hãy cho tôi biết trong phần nhận xét, bia và sao cho tất cả

Trong bài viết này, chúng ta sẽ tìm hiểu cách so sánh hai mảng chỉ bằng một dòng mã trong JavaScript. Đây là đoạn mã JavaScript một dòng sử dụng một trong những tính năng phổ biến nhất của ES6 =>

let difference = arrA.filter[x => !arrB.includes[x]];
5

Hãy xác định chức năng ngắn này

________số 8

Tham số

let difference = arrA.filter[x => !arrB.includes[x]];
6 và
let difference = arrA.filter[x => !arrB.includes[x]];
7 là mảng

const isEqual = [a, b] => a.length === b.length && a.every[[v, i] => v === b[i]];

Mảng là đối tượng trong JavaScript, do đó, toán tử ba bằng

let difference = arrA.filter[x => !arrB.includes[x]];
8 chỉ trả về
let difference = arrA.filter[x => !arrB.includes[x]];
9 nếu các mảng có cùng tham chiếu

Làm thế nào để bạn so sánh xem hai mảng có bằng nhau không? . thông số JavaScript xác định 4 cách khác nhau để kiểm tra xem hai giá trị có "bằng nhau" hay không và điều đó không tính đến sự bình đẳng sâu sắc giữa các đối tượng

Trong những trường hợp như thế này, bạn nên trình bày rõ ràng nhất có thể về ý nghĩa của cụm từ "bình đẳng". " Trong công nghệ phần mềm, đặt câu hỏi đúng cách thường làm cho câu trả lời trở nên rõ ràng

Với ý nghĩ đó, đây là 3 định nghĩa về đẳng thức cho mảng và cách kiểm tra chúng

Cùng chiều dài, mỗi giá trị bằng nhau

Một cách tiếp cận để so sánh

let difference = arrA.filter[x => !arrB.includes[x]];
6 và
let difference = arrA.filter[x => !arrB.includes[x]];
7 là kiểm tra xem mỗi giá trị của
let difference = arrA.filter[x => !arrB.includes[x]];
6 có hoàn toàn bằng với giá trị tương ứng của
let difference = arrA.filter[x => !arrB.includes[x]];
7 hay không. Điều này hoạt động tốt nếu tất cả các phần tử của mảng là nguyên thủy trái ngược với các đối tượng

Bình đẳng sâu sắc với POJO

Hàm

let difference = arrA.filter[x => !arrB.includes[x]];
4 trước hoạt động rất tốt đối với các giá trị nguyên thủy, nhưng không phù hợp nếu bạn muốn so sánh các đối tượng theo giá trị

Một cách gọn gàng để tính đến các giá trị đối tượng là so sánh các mảng theo đầu ra

let difference = arrA.filter[x => !arrB.includes[x]];
5 của chúng

Cách tiếp cận này rất tiện lợi vì nó yêu cầu mã tối thiểu và không có thư viện bên ngoài. Tuy nhiên, việc so sánh đầu ra của

let difference = arrA.filter[x => !arrB.includes[x]];
5 có một trường hợp cạnh không may có thể là một vấn đề tùy thuộc vào trường hợp sử dụng của bạn. Vì
let difference = arrA.filter[x => !arrB.includes[x]];
80 không phải là một giá trị JSON hợp lệ, các mảng bên dưới có cùng đầu ra
let difference = arrA.filter[x => !arrB.includes[x]];
5, vì
let difference = arrA.filter[x => !arrB.includes[x]];
5 chuyển đổi
let difference = arrA.filter[x => !arrB.includes[x]];
80 thành
let difference = arrA.filter[x => !arrB.includes[x]];
84

let difference = arrA.filter[x => !arrB.includes[x]];
0

Sử dụng
let difference = arrA.filter[x => !arrB.includes[x]];
85 của Lodash

Ngoài câu hỏi khó hiểu về

let difference = arrA.filter[x => !arrB.includes[x]];
84 so với
let difference = arrA.filter[x => !arrB.includes[x]];
80, việc so sánh đầu ra của
let difference = arrA.filter[x => !arrB.includes[x]];
5 cũng không tính đến các loại đối tượng. Đối với
let difference = arrA.filter[x => !arrB.includes[x]];
5, một đối tượng có hàm
let difference = arrA.filter[x => !arrB.includes[x]];
90 trả về 42 cũng giống như số 42

Tương tự, một đối tượng tùy chỉnh giống như một POJO

Mặt khác, hàm

let difference = arrA.filter[x => !arrB.includes[x]];
85 của Lodash tính đến tất cả những điều này

Hàm

let difference = arrA.filter[x => !arrB.includes[x]];
85 của Lodash là cách tốt nhất nếu bạn cần tất cả chuông và còi để kiểm tra xem các đối tượng có cùng lớp không. Cách tiếp cận
let difference = arrA.filter[x => !arrB.includes[x]];
5 hoạt động tốt đối với POJO, chỉ cần đảm bảo rằng bạn tính đến
let difference = arrA.filter[x => !arrB.includes[x]];
84 và chỉ sử dụng nó với dữ liệu đáng tin cậy -
let difference = arrA.filter[x => !arrB.includes[x]];
90 có thể là một lỗ hổng bảo mật

Bạn có thể so sánh hai mảng trong JavaScript không?

Mặc dù JavaScript không có phương thức sẵn có để so sánh trực tiếp hai mảng , nhưng JavaScript lại có phương thức sẵn có để so sánh hai chuỗi. Các chuỗi cũng có thể được so sánh bằng toán tử đẳng thức. Do đó, chúng ta có thể chuyển đổi các mảng thành chuỗi, sử dụng phương thức Array join[], sau đó kiểm tra xem các chuỗi có bằng nhau không.

Bạn có thể sử dụng == để so sánh các mảng không?

Sử dụng == trên mảng sẽ không cho kết quả mong muốn và nó sẽ so sánh chúng dưới dạng đối tượng .

Chúng ta có thể so sánh trực tiếp hai mảng không?

Trong Java, chúng ta có thể so sánh hai mảng bằng cách so sánh từng phần tử của mảng . Lớp Java Arrays cung cấp hai phương thức được xác định trước được sử dụng để so sánh hai mảng trong Java. Trong phần này, chúng ta sẽ tìm hiểu cách so sánh hai Mảng bằng Arrays. phương thức equals[] và Mảng.

Tôi có thể đánh đồng hai mảng không?

Hai mảng được gọi là bằng nhau nếu. cả hai đều chứa cùng một tập hợp các phần tử, cách sắp xếp [hoặc hoán vị] của các phần tử có thể/có thể không giống nhau . Nếu có lặp lại thì số phần tử lặp lại cũng phải bằng nhau thì hai mảng mới bằng nhau.

Chủ Đề