JavaScript >> Javascript 文檔 >  >> Tags >> object

JavaScript中如何將數組轉換為對象

JavaScript 中有四種方法可以將數組轉換為對象:

  1. 使用Object.assign() 將數組轉換為對象的方法,例如const obj = Object.assign({}, arr) .
  2. 使用展開語法(... ) 將數組轉換為對象,例如const obj = {...arr} .
  3. 使用 Array.forEach() 方法來迭代所有項目並將它們作為鍵值對添加到對像中。
  4. 使用 Object.fromEntries() 將鍵值對數組轉換為對象的方法,例如const obj = Object.fromEntries(arr) .

Object.assign() 方法

Object.assign() 方法是在 ES6 中引入的,它將所有可枚舉的自身屬性的值從一個或多個源對象複製到目標對象。它的語法如下:

Object.assign(target, ...sources)

target object 是第一個參數,也用作返回值。以下示例演示瞭如何使用 Object.assign() 將數組轉換為對象的方法:

const names = ['Alex', 'Bob', 'Johny', 'Atta']

const obj = Object.assign({}, names)

console.log(obj)
// { '0': 'Alex', '1': 'Bob', '2': 'Johny', '3': 'Atta' }

閱讀本指南以了解有關 Object.assign() 的更多信息 方法。

擴展運算符

另一種將數組轉換為對象的方法是使用對象擴展({... iterable} ) 操作員。這是一個例子:

const names = ['Alex', 'Bob', 'Johny', 'Atta']

const obj = { ...names }

console.log(obj)
// { '0': 'Alex', '1': 'Bob', '2': 'Johny', '3': 'Atta' }

Array.forEach() 方法

使用 Array.forEach() 將數組轉換為對象的方法:

  1. 將空對象聲明為變量。
  2. 使用 Array.forEach() 方法來迭代數組元素。
  3. 在每次迭代中,將元素作為鍵值對添加到對像中。
const names = ['Alex', 'Bob', 'Johny', 'Atta']

const obj = {}

names.forEach((elem, i) => {
  obj[i] = elem
})

console.log(obj)
// { 0: "Alex", 1: "Bob", 2: "Johny", 3: "Atta" }

與上述方法不同,Array.forEach() 方法允許您命名新對象的鍵。

names.forEach((elem, i) => {
  obj[`key${i}`] = elem
})

console.log(obj)
// { key0: 'Alex', key1: 'Bob', key2: 'Johny', key3: 'Atta' }

您還可以向 Array 添加一個函數 的原型,並在您想將數組轉換為對象時調用它:

Array.prototype.toObject = function () {
  const obj = {}

  this.forEach((elem, i) => {
    obj[i] = elem
  })

  return obj
}

const newObj = ['Alex', 'Bob', 'Johny', 'Atta'].toObject()

console.log(newObj)
// { '0': 'Alex', '1': 'Bob', '2': 'Johny', '3': 'Atta' }

Object.fromEntries() 方法

Object.fromEntries() 方法將鍵值對數組轉換為對象並返回結果,如下所示:

const props = [
  ['name', 'John Doe'],
  ['age', 29]
]

const obj = Object.fromEntries(props)

console.log(obj)
// { name: 'John Doe', age: 29 }

注意我們這次使用的嵌套數組。這些二維數組至少包含兩個元素——一個鍵和一個值。


Tutorial JavaScript 教程
  1. JavaScript 中的反應式編程

  2. Tilda:將 UTM 參數轉移到另一個頁面

  3. 使用 express 快速構建和發布 api。

  4. 探索 GraphQL 的 JavaScript 客戶端庫

  5. node.js 中的依賴沙盒與 Jpex

  6. JavaScript For Loop, forEach 和 jQuery each 方法

  7. 我什麼時候應該使用 TypeScript?

  1. 找不到 src 源圖像時如何靜默隱藏未找到圖像的圖標

  2. 激光和小行星,還有什麼? - JavaScript 中的 2019 年代碼出現 - 第 10 天

  3. 一個很棒的組件庫,可以提高你的性能和速度:Chakra UI

  4. 構建自己的編程語言

  5. JS 應用程序的持續集成 (CI) - GitHub Actions 工作流程

  6. Crana - 在一秒鐘內完成 React 和 NodeJS 應用程序

  7. Nuxt Storybooking:無痛方式

  1. [Storyblok, Gatsby] 在 Storyblok 富文本中集成語法高亮

  2. 我保證你會知道這之後的承諾

  3. 用不到 100 行代碼創建適合移動設備的導航組件

  4. 樂觀的 UI 技巧揭曉!