Bạn nên chọn cách tiếp cận nào tùy thuộc vào việc bạn cần sử dụng chỉ mục của mảng làm khóa đối tượng hay bạn cần sử dụng khóa tùy chỉnh
Chuyển đổi một mảng thành một đối tượng bằng Object. giao phó[]
Sử dụng phương thức Object.assign[]
để chuyển đổi một mảng thành một đối tượng, e. g. const obj = Object.assign[{}, arr]
Phương thức Object.assign
lấy đối tượng đích và đối tượng nguồn làm tham số, áp dụng các thuộc tính từ nguồn cho đích và trả về kết quả
Chúng tôi đã chuyển 2 đối số sau cho Đối tượng. chỉ định phương pháp
- đối tượng đích - đối tượng mà chúng tôi áp dụng các thuộc tính của nguồn
- [các] đối tượng nguồn - các đối tượng chứa các thuộc tính mà chúng ta muốn áp dụng
Phương thức trả về một đối tượng trong đó các khóa là các chỉ mục mảng và các giá trị là các phần tử mảng
Chuyển đổi một mảng thành một đối tượng bằng cách sử dụng Array. cho mỗi[]
Để chuyển đổi một mảng thành một đối tượng
- Khai báo một biến và khởi tạo nó cho một đối tượng rỗng
- Sử dụng phương thức
Array.forEach[]
để lặp lại mảng - Trên mỗi lần lặp lại, hãy thêm phần tử dưới dạng cặp khóa-giá trị vào đối tượng
Hàm chúng tôi đã chuyển đến Mảng. Phương thức forEach[] được gọi với từng phần tử trong mảng
Phương thức này cũng cho phép chúng ta truy cập vào chỉ mục của lần lặp hiện tại
Cách tiếp cận này thủ công hơn một chút, tuy nhiên, nó cho phép bạn đặt tên cho các khóa của đối tượng mới
Bạn không thể đặt tên cho các khóa của đối tượng nếu bạn sử dụng cách tiếp cận Object.assign[]
từ phân nhóm trước
Hàm mà chúng ta đã chuyển cho phương thức Array.forEach[]
được gọi với từng phần tử và chỉ mục, vì vậy bạn cũng có thể sử dụng index
làm khóa
Chuyển đổi một Mảng thành một Đối tượng bằng cách sử dụng cú pháp Spread [. ]
Sử dụng cú pháp lây lan [. ] để chuyển đổi một mảng thành một đối tượng, e. g. Array.forEach[]
0
Cú pháp trải rộng sẽ giải nén các giá trị của mảng thành một đối tượng mới, trong đó
- Các chỉ mục của mảng là các khóa của đối tượng
- Các phần tử trong mảng là các giá trị của đối tượng
Chúng tôi đã sử dụng cú pháp lây lan [. ] để giải nén mảng thành một đối tượng
Sự lây lan [. ] cú pháp có thể được sử dụng với bất kỳ lần lặp nào, chẳng hạn như một mảng, chuỗi, Array.forEach[]
1, v.v.
Tương tự như cách tiếp cận đầu tiên, các chỉ mục của mảng trở thành khóa của đối tượng và các phần tử trở thành giá trị của đối tượng
Chuyển đổi một mảng thành đối tượng bằng Object. fromEntries[]
Để chuyển đổi một mảng các cặp khóa-giá trị thành một đối tượng
- Truyền mảng cho phương thức
Object.fromEntries[]
- Phương thức
Object.fromEntries[]
chuyển đổi một mảng các cặp khóa-giá trị thành một đối tượng và trả về kết quả
Lưu ý rằng lần này chúng ta có một mảng hai chiều
Các mảng lồng nhau chứa 2 phần tử mỗi phần - một khóa và một giá trị
đối tượng. fromEntries chuyển đổi danh sách các cặp khóa-giá trị thành một đối tượng
Điều này chỉ hoạt động nếu bạn có một mảng hai chiều trong đó mỗi mảng con chứa 2 phần tử - khóa và giá trị
Chuyển đổi một mảng thành một đối tượng bằng cách sử dụng Array. giảm bớt[]
Để chuyển đổi một mảng thành một đối tượng
- Sử dụng phương thức
Array.forEach[]
4 để lặp lại mảng - Trên mỗi lần lặp lại, hãy gán một cặp khóa-giá trị mới cho đối tượng tích lũy
Hàm chúng tôi đã chuyển đến Mảng. phương thức rút gọn được gọi với từng phần tử trong mảng
Chúng tôi đặt một đối tượng trống làm giá trị ban đầu cho biến Array.forEach[]
5
Trên mỗi lần lặp lại, chúng tôi gán một cặp khóa-giá trị mới cho đối tượng và trả về giá trị của biến Array.forEach[]
5
Cách tiếp cận này cũng cho phép bạn gán tên khóa tùy chỉnh cho đối tượng
Chúng tôi đã sử dụng chuỗi Array.forEach[]
7 + chỉ mục, tuy nhiên, bạn có thể điều chỉnh điều này nếu cần
Chuyển đổi một mảng đối tượng thành một đối tượng bằng cách sử dụng Object.fromEntries[]
Để chuyển đổi một mảng các đối tượng thành một đối tượng
- Sử dụng phương thức
Array.forEach[]
9 để lặp lại mảng - Trả về một mảng của một khóa và một giá trị trên mỗi lần lặp
- Sử dụng phương thức
Object.fromEntries[]
0 để chuyển đổi mảng thành một đối tượng
Hàm chúng tôi đã chuyển đến Mảng. phương thức bản đồ đượ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 trả về một mảng chứa khóa và giá trị
Phương thức Object.fromEntries[]
1 trả về một mảng mới chứa các giá trị được trả về từ hàm gọi lại
Bước cuối cùng là chuyển mảng các cặp khóa-giá trị cho phương thức Object.fromEntries[]
để chuyển đổi nó thành một đối tượng
Phương thức tĩnh
Array.from["foo"];
// [ "f", "o", "o" ]
0 tạo một thể hiện Array.from["foo"];
// [ "f", "o", "o" ]
1 mới, được sao chép nông từ một đối tượng có thể lặp lại hoặc giống như mảngArray.from[arrayLike]
// Arrow function
Array.from[arrayLike, [element] => { /* … */ }]
Array.from[arrayLike, [element, index] => { /* … */ }]
// Mapping function
Array.from[arrayLike, mapFn]
Array.from[arrayLike, mapFn, thisArg]
// Inline mapping function
Array.from[arrayLike, function [element] { /* … */ }]
Array.from[arrayLike, function [element, index] { /* … */ }]
Array.from[arrayLike, function [element] { /* … */ }, thisArg]
Array.from[arrayLike, function [element, index] { /* … */ }, thisArg]
Array.from["foo"];
// [ "f", "o", "o" ]
2Một đối tượng có thể lặp lại hoặc giống như mảng để chuyển đổi thành một mảng
Array.from["foo"];
// [ "f", "o", "o" ]
3 Tùy chọnHàm ánh xạ để gọi mọi phần tử của mảng. Nếu được cung cấp, mọi giá trị được thêm vào mảng trước tiên sẽ được chuyển qua hàm này và thay vào đó, giá trị trả về của
Array.from["foo"];
// [ "f", "o", "o" ]
3 sẽ được thêm vào mảngHàm được gọi với các đối số sau
Array.from["foo"];
// [ "f", "o", "o" ]
5Phần tử hiện tại đang được xử lý trong mảng
Array.from["foo"];
// [ "f", "o", "o" ]
6Chỉ số của phần tử hiện tại đang được xử lý trong mảng
Array.from["foo"];
// [ "f", "o", "o" ]
7 Tùy chọnGiá trị được sử dụng là
Array.from["foo"];
// [ "f", "o", "o" ]
8 khi thực thi Array.from["foo"];
// [ "f", "o", "o" ]
3Phiên bản
Array.from["foo"];
// [ "f", "o", "o" ]
1 mớiArray.from["foo"];
// [ "f", "o", "o" ]
0 cho phép bạn tạo Array.from["foo"];
// [ "f", "o", "o" ]
1 từ- các đối tượng có thể lặp lại [các đối tượng như
3 vàconst set = new Set[["foo", "bar", "baz", "foo"]]; Array.from[set]; // [ "foo", "bar", "baz" ]
4];const set = new Set[["foo", "bar", "baz", "foo"]]; Array.from[set]; // [ "foo", "bar", "baz" ]
- đối tượng dạng mảng [đối tượng có thuộc tính
5 và các phần tử được lập chỉ mục]const set = new Set[["foo", "bar", "baz", "foo"]]; Array.from[set]; // [ "foo", "bar", "baz" ]
Array.from["foo"];
// [ "f", "o", "o" ]
0 không bao giờ tạo một mảng thưa thớt. Nếu đối tượng Array.from["foo"];
// [ "f", "o", "o" ]
2 thiếu một số thuộc tính chỉ mục, chúng sẽ trở thành const set = new Set[["foo", "bar", "baz", "foo"]];
Array.from[set];
// [ "foo", "bar", "baz" ]
8 trong mảng mớiArray.from["foo"];
// [ "f", "o", "o" ]
0 có tham số tùy chọn Array.from["foo"];
// [ "f", "o", "o" ]
3, cho phép bạn thực thi một hàm trên từng phần tử của mảng được tạo, tương tự như const map = new Map[[
[1, 2],
[2, 4],
[4, 8],
]];
Array.from[map];
// [[1, 2], [2, 4], [4, 8]]
const mapper = new Map[[
["1", "a"],
["2", "b"],
]];
Array.from[mapper.values[]];
// ['a', 'b'];
Array.from[mapper.keys[]];
// ['1', '2'];
1. Nói rõ hơn, const map = new Map[[
[1, 2],
[2, 4],
[4, 8],
]];
Array.from[map];
// [[1, 2], [2, 4], [4, 8]]
const mapper = new Map[[
["1", "a"],
["2", "b"],
]];
Array.from[mapper.values[]];
// ['a', 'b'];
Array.from[mapper.keys[]];
// ['1', '2'];
2 có cùng kết quả với const map = new Map[[
[1, 2],
[2, 4],
[4, 8],
]];
Array.from[map];
// [[1, 2], [2, 4], [4, 8]]
const mapper = new Map[[
["1", "a"],
["2", "b"],
]];
Array.from[mapper.values[]];
// ['a', 'b'];
Array.from[mapper.keys[]];
// ['1', '2'];
3, chỉ khác là nó không tạo mảng trung gian, và Array.from["foo"];
// [ "f", "o", "o" ]
3 chỉ nhận 2 đối số [Array.from["foo"];
// [ "f", "o", "o" ]
5, Array.from["foo"];
// [ "f", "o", "o" ]
6] mà không nhận cả mảng, vì mảng vẫn đang được xây dựngGhi chú. Hành vi này quan trọng hơn đối với các mảng đã nhập, vì mảng trung gian nhất thiết phải có các giá trị bị cắt bớt để phù hợp với loại thích hợp.
Array.from["foo"];
// [ "f", "o", "o" ]
0 được triển khai để có cùng chữ ký với const map = new Map[[
[1, 2],
[2, 4],
[4, 8],
]];
Array.from[map];
// [[1, 2], [2, 4], [4, 8]]
const mapper = new Map[[
["1", "a"],
["2", "b"],
]];
Array.from[mapper.values[]];
// ['a', 'b'];
Array.from[mapper.keys[]];
// ['1', '2'];
8Phương thức
Array.from["foo"];
// [ "f", "o", "o" ]
0 là một phương thức xuất xưởng chung. Ví dụ: nếu một lớp con của Array.from["foo"];
// [ "f", "o", "o" ]
1 kế thừa phương thức // Create an array based on a property of DOM Elements
const images = document.querySelectorAll["img"];
const sources = Array.from[images, [image] => image.src];
const insecureSources = sources.filter[[link] => link.startsWith["//"]];
1, thì phương thức // Create an array based on a property of DOM Elements
const images = document.querySelectorAll["img"];
const sources = Array.from[images, [image] => image.src];
const insecureSources = sources.filter[[link] => link.startsWith["//"]];
1 được kế thừa sẽ trả về các thể hiện mới của lớp con thay vì các thể hiện của lớp con Array.from["foo"];
// [ "f", "o", "o" ]
1. Trên thực tế, giá trị Array.from["foo"];
// [ "f", "o", "o" ]
8 có thể là bất kỳ hàm tạo nào chấp nhận một đối số duy nhất biểu thị độ dài của mảng mới. Khi một iterable được truyền dưới dạng Array.from["foo"];
// [ "f", "o", "o" ]
2, hàm tạo được gọi mà không có đối số; . const set = new Set[["foo", "bar", "baz", "foo"]];
Array.from[set];
// [ "foo", "bar", "baz" ]
5 cuối cùng sẽ được đặt lại khi quá trình lặp kết thúc. Nếu giá trị Array.from["foo"];
// [ "f", "o", "o" ]
8 không phải là hàm tạo, thì hàm tạo Array.from["foo"];
// [ "f", "o", "o" ]
1 đơn giản được sử dụng thay thếArray.from["foo"];
// [ "f", "o", "o" ]
const set = new Set[["foo", "bar", "baz", "foo"]];
Array.from[set];
// [ "foo", "bar", "baz" ]
const map = new Map[[
[1, 2],
[2, 4],
[4, 8],
]];
Array.from[map];
// [[1, 2], [2, 4], [4, 8]]
const mapper = new Map[[
["1", "a"],
["2", "b"],
]];
Array.from[mapper.values[]];
// ['a', 'b'];
Array.from[mapper.keys[]];
// ['1', '2'];
// Create an array based on a property of DOM Elements
const images = document.querySelectorAll["img"];
const sources = Array.from[images, [image] => image.src];
const insecureSources = sources.filter[[link] => link.startsWith["//"]];
function f[] {
return Array.from[arguments];
}
f[1, 2, 3];
// [ 1, 2, 3 ]
// Using an arrow function as the map function to
// manipulate the elements
Array.from[[1, 2, 3], [x] => x + x];
// [2, 4, 6]
// Generate a sequence of numbers
// Since the array is initialized with `undefined` on each position,
// the value of `v` below will be `undefined`
Array.from[{ length: 5 }, [v, i] => i];
// [0, 1, 2, 3, 4]
// Sequence generator function [commonly referred to as "range", e.g. Clojure, PHP, etc.]
const range = [start, stop, step] =>
Array.from[{ length: [stop - start] / step + 1 }, [_, i] => start + i * step];
// Generate numbers range 0..4
range[0, 4, 1];
// [0, 1, 2, 3, 4]
// Generate numbers range 1..10 with step of 2
range[1, 10, 2];
// [1, 3, 5, 7, 9]
// Generate the alphabet using Array.from making use of it being ordered as a sequence
range["A".charCodeAt[0], "Z".charCodeAt[0], 1].map[[x] =>
String.fromCharCode[x],
];
// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
Phương thức
// Create an array based on a property of DOM Elements
const images = document.querySelectorAll["img"];
const sources = Array.from[images, [image] => image.src];
const insecureSources = sources.filter[[link] => link.startsWith["//"]];
1 có thể được gọi trên bất kỳ hàm xây dựng nào chấp nhận một đối số duy nhất biểu thị độ dài của mảng mới