javascript - 遍历对象 es6

标签 javascript ecmascript-6

我有一个看起来像这样的对象:

const object = {
head: 1,
eyes: 2,
arms: 2,
legs: 3
}

我想遍历这个对象和这个并注销每个键名,例如eyes 值的数量。

这会导致:

head
eyes
eyes
arms
arms 
legs 
legs
legs

目前我有这个解决方案,但感觉它可以做得更整洁、更易读。

Object.keys(object)
  .map(key => {
    return [...Array(object[key])].map( (_, i) => {
      return console.log(key)
   })

有什么建议吗?

最佳答案

您可以使用 Object.entries()map() 方法并返回新数组。

const object = {head: 1,eyes: 2,arms: 2,legs: 3}

const res = [].concat(...Object.entries(object).map(([k, v]) => Array(v).fill(k)))
console.log(res)

或者您可以使用 reduce() 和数组中的扩展语法。

const object = {head: 1,eyes: 2,arms: 2,legs: 3}

const res = Object
  .entries(object)
  .reduce((r, [k, v]) => [...r, ...Array(v).fill(k)], [])
  // Or you can use push instead
  // .reduce((r, [k, v]) => (r.push(...Array(v).fill(k)), r), [])

console.log(res)

关于javascript - 遍历对象 es6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47954314/

相关文章:

typescript - 类型 'IterableIterator<number>'不是数组类型或字符串类型

javascript - 设置可以选择的复选框的数量限制

javascript - Lodash - 从对象中删除嵌套属性

javascript - 如何使用带有 Leaflet 1.1.0 的汇总来创建单个包?

javascript - 在 redux 容器中使用 store.getState() 是否正确?

javascript - 检查对象值是否等于字符串值

javascript - 将 $compile 注入(inject)指令未定义

javascript - 如何将表格复制到 Excel 或 Google 电子表格

javascript - React.js 滚动事件后调用函数

javascript - .then() 中的 Promise.reject 返回未定义