在 TypeScript 中将对象转换为数组
How to Convert an Object to an Array in TypeScript
在 TypeScript 中可以通过三种方式将对象转换为数组:
Object.keys()
– 返回包含对象键的数组。Object.values()
– 返回包含对象值的数组。Object.entries()
– 返回包含键值对数组的数组。
索引.ts
const obj = { name: 'Tom', country: 'Chile' }; const keys = Object.keys(obj); console.log(keys); // 👉️ ['name', 'country'] const values = Object.values(obj); console.log(values); // 👉️ ['Tom', 'Chile'] const entries = Object.entries(obj); console.log(entries); // 👉️ [['name', 'Tom'], ['country', 'Chile']]
在第一个示例中,我们使用了
Object.keys
方法来获取对象键的数组。
for...in
该方法返回一个字符串数组,其中对象的键与循环提供的顺序相同。
索引.js
// 👇️️ ['one', 'two'] console.log(Object.keys({one: 1, two: 2}));
然后,您可以通过以下方式遍历键数组:
索引.ts
const obj = { name: 'Tom', country: 'Chile' }; const keys = Object.keys(obj) as (keyof typeof obj)[]; console.log(keys); // 👉️ ['name', 'country'] keys.forEach((key) => { // 👇️ name Tom, country Chile console.log(key, obj[key]); });
第二个示例演示如何使用
Object.values
方法获取对象值的数组。
索引.ts
const obj = { name: 'Tom', country: 'Chile' }; const values = Object.values(obj); console.log(values); // 👉️ ['Tom', 'Chile']
for...in
与 keys 方法类似,值以与循环提供的顺序相同的顺序添加到数组中。
第三个示例使用
Object.entries
方法,它返回一个二维数组。
嵌套数组由 2 个元素组成 – 键和值。
索引.ts
const obj = { name: 'Tom', country: 'Chile' }; // 👇️ const entries: [string, string][] const entries = Object.entries(obj); console.log(entries); // 👉️ [['name', 'Tom'], ['country', 'Chile']]
您可以使用 方法方便地迭代键值对数组
forEach()
。
索引.ts
const obj = { name: 'Tom', country: 'Chile' }; // 👇️ const entries: [string, string][] const entries = Object.entries(obj); console.log(entries); // 👉️ [['name', 'Tom'], ['country', 'Chile']] entries.forEach(([key, value]) => { // 👇️ name Tom, country Chile console.log(key, value); });
请注意,我们使用数组解构来解构数组中的键和值。
这是一个更多的例子,展示了数组解构是如何工作的。
索引.ts
const arr = ['hello', 'world']; const [a, b] = arr; console.log(a); // 👉️ "hello" console.log(b); // 👉️ "world"
我们基本上是将数组元素解包为变量。请注意,订单已保留。
键值对数组有很多应用。
例如,您可以使用一个创建一个Map
,这是一种与对象非常相似的数据结构,其中保留了键的插入顺序,任何值(对象和基元)都可以用作键或值。
索引.ts
const arr = [ ['name', 'Tom'], ['country', 'Chile'], ] as const; const map = new Map(arr); console.log(map); // 👉️ {'name', 'Tom', 'country' => 'Chile'}