Để tìm sự khác biệt của 2 mảng mà không có bản sao:difference of 2 arrays without duplicates:
function difference[arr1, arr2]{
let setA = new Set[arr1];
let differenceSet = new Set[arr2.filter[ele => !setA.has[ele]]];
return [...differenceSet ];
}
1 .________ 5 sẽ trở lại []
2 .________ 7 sẽ trở lại [4,5,6]
3 .________ 9 sẽ trở lại []
4 .________ 11 sẽ trở lại
function absDifference[arr1, arr2]{
const {larger, smaller} = arr1.length > arr2.length ?
{larger: arr1, smaller: arr2} : {larger: arr2, smaller: arr1}
let setA = new Set[smaller];
let absDifferenceSet = new Set[larger.filter[ele => !setA.has[ele]]];
return [...absDifferenceSet ];
}
2Lưu ý: Giải pháp trên yêu cầu bạn luôn gửi mảng lớn hơn làm tham số thứ hai. Để tìm sự khác biệt tuyệt đối, trước tiên bạn sẽ cần tìm mảng lớn hơn của cả hai và sau đó làm việc trên chúng.
Để tìm sự khác biệt tuyệt đối của 2 mảng mà không có bản sao:absolute difference of 2 arrays without duplicates:
function absDifference[arr1, arr2]{
const {larger, smaller} = arr1.length > arr2.length ?
{larger: arr1, smaller: arr2} : {larger: arr2, smaller: arr1}
let setA = new Set[smaller];
let absDifferenceSet = new Set[larger.filter[ele => !setA.has[ele]]];
return [...absDifferenceSet ];
}
1 .________ 13 sẽ trở lại []
2 .________ 15 sẽ trở lại [4,5,6]
3 .________ 17 sẽ trở lại
function absDifference[arr1, arr2]{
const {larger, smaller} = arr1.length > arr2.length ?
{larger: arr1, smaller: arr2} : {larger: arr2, smaller: arr1}
let setA = new Set[smaller];
let absDifferenceSet = new Set[larger.filter[ele => !setA.has[ele]]];
return [...absDifferenceSet ];
}
24 .________ 19 sẽ trở lại
function absDifference[arr1, arr2]{
const {larger, smaller} = arr1.length > arr2.length ?
{larger: arr1, smaller: arr2} : {larger: arr2, smaller: arr1}
let setA = new Set[smaller];
let absDifferenceSet = new Set[larger.filter[ele => !setA.has[ele]]];
return [...absDifferenceSet ];
}
2Lưu ý ví dụ 3 từ cả hai giải phápexample 3 from both the solutions
Nhận sự khác biệt giữa hai mảng #
Để có được sự khác biệt giữa hai mảng:
- Sử dụng phương thức
1 để lặp qua mảng đầu tiên.Copied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
- Kiểm tra xem mỗi phần tử không được chứa trong mảng thứ hai.
- Lặp lại các bước, nhưng lần này lặp lại trên mảng thứ hai.
Copied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
Hàm chúng tôi chuyển đến phương thức mảng. Phương thức được gọi với từng phần tử trong mảng.
Trên mỗi lần lặp, chúng tôi kiểm tra xem phần tử không chứa trong mảng khác.
Phương thức
2 trả về một mảng chứa các phần tử thỏa mãn điều kiện, nói cách khác, các phần tử từ mảng thứ nhất không chứa trong mảng thứ hai.Copied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
Tuy nhiên, điều này không trả về sự khác biệt hoàn toàn giữa các mảng, bởi vì chúng tôi chỉ kiểm tra xem các phần tử từ mảng thứ nhất không có trong mảng thứ hai. Chúng tôi đã không kiểm tra xem các phần tử từ mảng thứ hai không có trong mảng thứ nhất.
Copied!
const arr1 = ['a', 'b']; const arr2 = ['a', 'b', 'c', 'd']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ [] console.log[getDifference[arr1, arr2]];
Đây là cùng một mã, tuy nhiên chúng tôi đã chuyển các giá trị của các biến
3 vàCopied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
4. Bây giờCopied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
4 chứa 4 yếu tố.Copied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
Vì chúng tôi chỉ lặp lại trên
3, mà chỉ có các yếu tố ____27 cả hai đều có trongCopied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
4, phương thức trả về một mảng trống.Copied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
Thay vào đó, chúng tôi đã mong đợi giá trị trả lại là
9.Copied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
Để giải quyết vấn đề này, chúng ta cần gọi phương pháp Copied!
0 hai lần và kết hợp kết quả.const arr1 = ['a', 'b'];
const arr2 = ['a', 'b', 'c', 'd'];
function getDifference[a, b] {
return a.filter[element => {
return !b.includes[element];
}];
}
// 👇️ []
console.log[getDifference[arr1, arr2]];
Copied!
const arr1 = ['a', 'b']; const arr2 = ['a', 'b', 'c', 'd']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } const difference = [ ...getDifference[arr1, arr2], ...getDifference[arr2, arr1] ]; console.log[difference]; // 👉️ ['c', 'd']
Đây là những gì chúng tôi đã làm để có được điều này hoạt động:
- Gọi phương thức
2 trên mảng đầu tiên và chỉ trả về các phần tử không có trong mảng thứ hai.Copied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
- Gọi phương thức
2 trên mảng thứ hai và chỉ trả về các phần tử không có trong mảng thứ nhất.Copied!
const arr1 = ['a', 'b', 'c', 'd']; const arr2 = ['a', 'b']; function getDifference[a, b] { return a.filter[element => { return !b.includes[element]; }]; } // 👇️ ['c', 'd'] console.log[getDifference[arr1, arr2]];
- Chúng tôi đã kết hợp các kết quả từ hai mảng thành một mảng thứ ba, sử dụng cú pháp của toán tử [...].
Một cách dễ dàng để suy nghĩ về toán tử lây lan [...] là chúng tôi đang giải nén các giá trị của một mảng vào một mảng khác.
Bây giờ ví dụ của chúng tôi đã hoàn tất và trả về sự khác biệt giữa hai mảng.
Đọc thêm #
- Nhận sự khác biệt giữa hai mảng đối tượng trong JavaScript
- Kiểm tra xem thuộc tính đối tượng không được xác định trong JavaScript