发布于 2026-01-06 9 阅读
0

在 JavaScript 中将对象转换为数组

在 JavaScript 中将对象转换为数组

CodeTidbit 由 SamanthaMing.com 提供

终于,随着 ES2017 的发布,这正式成为现实!我们现在有 3 种方法可以将对象转换为数组🎊

数组本身就包含一系列方法(不好意思,这个双关梗有点烂😝)。所以,通过将对象转换为数组,你就可以访问所有这些方法了。耶🥳



const zoo = {
  lion: '🦁',
  panda: '🐼'
};

Object.keys(zoo)
// ['lion', 'panda']

Object.values(zoo)
// ['🦁', '🐼']

Object.entries(zoo)
// [ ['lion', '🦁'], ['panda', '🐼'] ]


Enter fullscreen mode Exit fullscreen mode

该讲故事了……

古代

很久很久以前,在一个遥远的星系,遍历物体并不容易。好吧,我有点夸张了😅。但我记得每当我需要把一个物体转换object成一个对象时array,我都必须这样做。



var numbers = {
  one: 1,
  two: 2
};

var keys = [];

for (var number in numbers) {
  if(numbers.hasOwnProperty(number)){
    keys.push(number)
  }
}

keys; // [ 'one', 'two' ]


Enter fullscreen mode Exit fullscreen mode

我一直很恼火,希望有更好的办法……

ES6 -Object.keys

然后ES6出现了!我的生活从此改变!我们终于有了更轻松的方法🥳

现在,有一个内置方法可以快速将对象中的所有键转换为数组:



const numbers = {
  one: 1,
  two: 2
}

Object.keys(numbers);
// [ 'one', 'two' ]


Enter fullscreen mode Exit fullscreen mode

生活真美好!但随后我又生气了。为什么我只能提取密钥,我也想要我的值!人类总是贪得无厌,不是吗😂 然后 ES2017 就来了……

对象.值

嗨,我是 ES2017,我会满足你所有的愿望🧞‍♀️。现在你可以用一个方法轻松地将值提取到数组中。



const numbers = {
  one: 1,
  two: 2
}

Object.values(numbers);
// [ 1, 2 ]


Enter fullscreen mode Exit fullscreen mode

对象条目

但 ES2017 的惊喜远不止于此。它给了我更多!现在我承认键和值都可用了,所以别生气了。我简直惊呆了。它让我瞬间开心起来😆



const numbers = {
  one: 1,
  two: 2
}

Object.entries(numbers);
// [ ['one', 1], ['two', 2] ]


Enter fullscreen mode Exit fullscreen mode

布亚👊

对象条目 + 解构

但是,我当时就想……嵌套数组🤨。拜托,用起来太麻烦了。ES6 及时出现,说:别担心!这就是我给你解构赋值的原因!



const numbers = {
  one: 1,
}

const objectArray = Object.entries(numbers);

objectArray.forEach(([key, value]) => {
  console.log(key); // 'one'
  console.log(value); // 1
})


Enter fullscreen mode Exit fullscreen mode

ES6,这就是为什么你是最棒的💛

故事结束

希望你们喜欢我讲的代码故事😂

现在就去体验一下这些超棒的对象方法吧😊

浏览器支持

Object.keys它拥有最佳的支持。我说的最佳,是指它支持 Internet Explorer 😆。其他的,Object.values以及Object.entries,很遗憾,不支持 Internet Explorer。幸运的是,有 polyfill 可以改善支持。

聚酯纤维

等等,还有更多……

你接下来可能会问,现在该如何将数组转换回对象呢?别担心,这个问题已经解决了。这里有一个新方法叫做 ` Object.fromEntries.`。它本质上是 `.` 的反函数Object.entries



const array = [
  [ 'one', 1 ],
  [ 'two', 2 ]
];

Object.fromEntries(array);
// { one: 1, two: 2 }


Enter fullscreen mode Exit fullscreen mode

MDN:Object.fromEntries

注意:这项技术非常新,所以支持有限。先把它记在知识库里,但最好过段时间再把它加入你的实际工具箱🧰

社区意见

  • @podfeet我想创建一个特定形式的对象,所以我过去常常object.keys去发现我想提取的特定元素的索引。

资源

感谢阅读❤
欢迎关注!Instagram | Twitter | Facebook |博客| SamanthaMing.com

文章来源:https://dev.to/samanthaming/converting-object-to-an-array-in-javascript-4bao