如何在 TypeScript 中将对象转换为数组

在 TypeScript 中将对象转换为数组

How to Convert an Object to an Array in TypeScript

在 TypeScript 中可以通过三种方式将对象转换为数组:

  1. Object.keys()– 返回包含对象键的数组。
  2. Object.values()– 返回包含对象值的数组。
  3. 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'}