Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象转换为数组并将键添加为新属性_Javascript_Arrays_Object_Ecmascript 6 - Fatal编程技术网

Javascript 将对象转换为数组并将键添加为新属性

Javascript 将对象转换为数组并将键添加为新属性,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,我有一个要转换为数组的对象。我希望该键作为数组中每个对象的一部分。如何将对象转换为数组并将键保留为新属性id?我有工作代码,但不知道是否有更干净/更简单的方法 示例对象 const obj = { 'ID-ABC': { price: 100 }, 'ID-DEF': { price: 200 } } [{ id: 'ID-ABC', price: 100 }, { id: 'ID-DEF', price: 200 }] 预期产出 const obj = {

我有一个要转换为数组的对象。我希望该键作为数组中每个对象的一部分。如何将对象转换为数组并将键保留为新属性id?我有工作代码,但不知道是否有更干净/更简单的方法

示例对象

const obj = {
  'ID-ABC': {
    price: 100
  },
  'ID-DEF': {
    price: 200
  }
}
[{ id: 'ID-ABC', price: 100 }, { id: 'ID-DEF', price: 200 }]
预期产出

const obj = {
  'ID-ABC': {
    price: 100
  },
  'ID-DEF': {
    price: 200
  }
}
[{ id: 'ID-ABC', price: 100 }, { id: 'ID-DEF', price: 200 }]
当前代码

const array = []
for (const property in obj) {
  const newObj = {
    id: property,
    price: obj[property].price
  }
  array.push(newObj)
}

您的代码已经是最简单的解决方案。您可以像这样内联
newObj
变量:

const数组=[]
for(对象中的常量属性){
array.push({
id:财产,
价格:obj[property]。价格
})
}
但是剩下的代码真的很好

使用
Object.entries()
获取
[id,val]
对的数组,然后通过添加
id
,并展开原始对象(
val
),映射以创建对象数组:

const obj={“ID-ABC”:{“price”:100},“ID-DEF”:{“price”:200}
常量结果=对象项(obj)
.map(([id,val])=>({id,…val}))
console.log(结果)
请不要回答已关闭的问题。如果用问题解决问题,则可以重新打开该问题。如果您当前的代码有效,您可能会在以下方面做得更好(正如我在删除其他问题时所说的那样)。