Viết một hàm JavaScript để lấy tất cả các kết hợp tập hợp con có thể có độ dài cố định [ví dụ 2] trong một mảng
Mảng mẫu. [1, 2, 3] và độ dài tập hợp con là 2
Đầu ra dự kiến. [[2, 1], [3, 1], [3, 2], [3, 2, 1]]
Giải pháp mẫu. -
Mã HTML
JavaScript array subset
Mã JavaScript
function subset[arra, arra_size]
{
var result_set = [],
result;
for[var x = 0; x < Math.pow[2, arra.length]; x++]
{
result = [];
i = arra.length - 1;
do
{
if[ [x & [1 = arra_size]
{
result_set.push[result];
}
}
return result_set;
}
console.log[subset[[1, 2, 3], 2]];
Đầu ra mẫu
[[2,1],[3,1],[3,2],[3,2,1]]
Sơ đồ
Bản thử trực tiếp
Xem Pen JavaScript - Nhận tất cả các tập hợp con có thể có với các kết hợp độ dài cố định trong hàm mảng-ex-21 của w3resource [@w3resource] trên CodePen
Cải thiện giải pháp mẫu này và đăng mã của bạn qua Disqus
Trước. Viết hàm JavaScript tạo id chuỗi [độ dài được chỉ định] gồm các ký tự ngẫu nhiên.
Tiếp theo. Viết hàm JavaScript chấp nhận hai đối số, một chuỗi và một chữ cái và hàm sẽ đếm số lần xuất hiện của chữ cái được chỉ định trong chuỗi.
Mức độ khó của bài tập này là gì?
Dễ dàng trung bình khóKiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource
JavaScript. Lời khuyên trong ngày
Sử dụng chữ mẫu để kết hợp chuỗi
Đặt các chuỗi lại với nhau là một điều khó khăn, đặc biệt là khi kết hợp các chuỗi và biến. Để làm cho quy trình này đơn giản hơn, bạn có thể sử dụng các ký tự mẫu [được đánh dấu bằng dấu gạch ngược], nhận cả chuỗi và biến
function greet[name] { return `Hi, ${name}`; //template literal } console.log[greet['Leo']];
Lưu ý ở đây rằng bằng cách sử dụng mẫu chữ, chúng ta có thể ghi lời chào cho bất kỳ người dùng nào dựa trên tên được truyền cho chúng ta, kết hợp chuỗi Hi và giá trị của tên biến được truyền. Do đó mã này in. Chào Leo
Trong bài viết này, chúng ta sẽ tìm hiểu cách lấy tất cả các tập hợp con của một mảng chỉ bằng cách sử dụ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 =>
[[2,1],[3,1],[3,2],[3,2,1]]2
Hãy xác định chức năng ngắn này
const getSubsets = arr => arr.reduce[[prev, curr] => prev.concat[prev.map[k => k.concat[curr]]], [[]]];
Tất cả các mục này được truy cập thông qua một chỉ mục. Trong JavaScript, mảng là các đối tượng thông thường chứa giá trị tại khóa được chỉ định, một khóa số
Mảng là đối tượng JavaScript có khóa số cố định và giá trị động chứa bất kỳ lượng dữ liệu nào trong một biến đơn
Mảng có thể là một chiều hoặc nhiều chiều. Mảng JavaScript có thể lưu trữ mọi thứ như giá trị trực tiếp hoặc lưu trữ các đối tượng JavaScript
Không giống như các ngôn ngữ khác, mảng JS có thể chứa các loại dữ liệu khác nhau ở các chỉ số khác nhau của cùng một mảng. Chúng ta sẽ tìm hiểu cách trích xuất một số phần tử hoặc tập hợp con của một mảng trong JavaScript
Phương thức
[[2,1],[3,1],[3,2],[3,2,1]]3 là một phương thức tích hợp được cung cấp bởi JavaScript. Phương pháp này cắt mảng ở hai nơi
Việc cắt giảm này xảy ra bằng cách lấy hai đầu vào, chỉ số bắt đầu và chỉ số kết thúc. Và dựa vào đó, phần của mảng giữa các chỉ số sẽ được trả về
Nếu chỉ chỉ mục bắt đầu được chỉ định, nó sẽ trả về phần tử cuối cùng. Ưu điểm của việc sử dụng
[[2,1],[3,1],[3,2],[3,2,1]]4 so với
[[2,1],[3,1],[3,2],[3,2,1]]5 là mảng ban đầu là
[[2,1],[3,1],[3,2],[3,2,1]]6 vì nó nằm trong một mối nối
cú pháp
slice[]
slice[start]
slice[start, end]
Mỗi phần tử có trong chỉ mục
[[2,1],[3,1],[3,2],[3,2,1]]7 và
const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
0 [bao gồm phần tử bắt đầu và phần tử dừng trước phần tử kết thúc] được chèn vào mảng mớiChỉ số kết thúc hoàn toàn là một tham số tùy chọn. Xem tài liệu phương pháp
[[2,1],[3,1],[3,2],[3,2,1]]3 để biết thêm thông tin
const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
Khi chúng ta gọi
const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
2, phần tử const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
3 được sao chép từ mảng ban đầu, const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
4 sang const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
5Nếu chỉ mục bắt đầu lớn hơn độ dài của một mảng, nó sẽ xuất hiện trống và đồng thời, mảng trống sẽ được trả về dưới dạng đầu ra
Thật thú vị, tham số đầu vào được coi là một
const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
6 nếu bạn chỉ định một chỉ số âm. Khi bạn chạy đoạn mã trên trong bất kỳ trình duyệt nào, nó sẽ in một cái gì đó như thế nàyđầu ra
Phương thức
const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
7 ảnh hưởng hoặc sửa đổi nội dung của một mảng. Điều này được thực hiện bằng cách xóa, thay thế các mục hiện có và thêm các mục mới vào vị trí của chúngcú pháp
function subset[arra, arra_size]
{
var result_set = [],
result;
for[var x = 0; x < Math.pow[2, arra.length]; x++]
{
result = [];
i = arra.length - 1;
do
{
if[ [x & [1 = arra_size]
{
result_set.push[result];
}
}
return result_set;
}
console.log[subset[[1, 2, 3], 2]];
4Phương thức nối JavaScript nhận ba tham số đầu vào, trong đó tham số đầu tiên là
[[2,1],[3,1],[3,2],[3,2,1]]7
Tham số bắt buộc chỉ định vị trí/chỉ mục bắt đầu của mảng để sửa đổi mảng. Nếu lớn hơn độ dài của một mảng, bắt đầu được đặt thành độ dài của mảng
Trong trường hợp này, không có phần tử nào bị xóa, nhưng phương thức này hoạt động giống như một hàm cộng, thêm bao nhiêu phần tử tùy theo số phần tử [n*] được cung cấp
Nếu âm, hãy bắt đầu với nhiều phần tử đó ở cuối mảng
Tham số thứ hai là
const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
9, một tham số tùy chọn. Tham số này chỉ định số phần tử của mảng cần loại bỏ ngay từ đầuNếu bỏ đi
const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
9 hoặc giá trị của nó bằng hoặc lớn hơn function subset[arra, arra_size]
{
var result_set = [],
result;
for[var x = 0; x < Math.pow[2, arra.length]; x++]
{
result = [];
i = arra.length - 1;
do
{
if[ [x & [1 = arra_size]
{
result_set.push[result];
}
}
return result_set;
}
console.log[subset[[1, 2, 3], 2]];
41 thì tất cả các phần tử từ đầu đến cuối mảng đều bị xóa0 hoặc âm, không có phần tử nào bị xóa. Trong trường hợp này, bạn cần nhập tối thiểu một mục mới
Tham số thứ ba là
function subset[arra, arra_size]
{
var result_set = [],
result;
for[var x = 0; x < Math.pow[2, arra.length]; x++]
{
result = [];
i = arra.length - 1;
do
{
if[ [x & [1 = arra_size]
{
result_set.push[result];
}
}
return result_set;
}
console.log[subset[[1, 2, 3], 2]];
42, một tham số tùy chọn. Tham số này chỉ định các phần tử để thêm vào mảng, bắt đầu từ đầuNếu bạn không chỉ định một mục, thì
const inputArray = [1, 2, 3, 4, 5];
const outputArray1 = inputArray.slice[0, 1];
const outputArray2 = inputArray.slice[1, 3];
const outputArray3 = inputArray.slice[-2];
console.log[outputArray1];
console.log[outputArray2];
console.log[outputArray3];
7 chỉ loại bỏ các phần tử của mảngPhương thức này trả về một mảng thay thế chứa các mục đã xóa. Trả về mảng n phần tử nếu chỉ xóa n phần tử
Nếu không có phần tử nào bị xóa, một mảng trống sẽ được trả về. Xem tài liệu phương pháp
[[2,1],[3,1],[3,2],[3,2,1]]5 để biết thêm thông tin
[[2,1],[3,1],[3,2],[3,2,1]]0
Trong ví dụ trên, chúng tôi đã chỉ định các kiểu trái cây khác nhau. Khi bạn trích xuất trái cây có múi, nó sẽ ảnh hưởng đến mảng
function subset[arra, arra_size]
{
var result_set = [],
result;
for[var x = 0; x < Math.pow[2, arra.length]; x++]
{
result = [];
i = arra.length - 1;
do
{
if[ [x & [1 = arra_size]
{
result_set.push[result];
}
}
return result_set;
}
console.log[subset[[1, 2, 3], 2]];
45 ban đầu và trả về một mảngĐiều đó không chứa tên của trái cây họ cam quýt. Khi bạn chạy đoạn mã trên trong bất kỳ trình duyệt nào, nó sẽ in một cái gì đó như thế này