如何将对象键插入对象值并​​将其转换为数组?

时间:2021-03-28 10:11:26

标签: javascript arrays javascript-objects

我的东西是这样的

const employees = {
  "0813562121": {
    "city": "Melbourne",
    "name": "Allison"
  },
  "8753452122": {
    "city": "Melbourne",
    "name": "Aria"
  }
}

我需要把它变成这样

 const employees = [
     {
        "city": "Melbourne",
        "name": "Allison",
        "_id": "0813562121"
      },
      {
        "city": "Melbourne",
        "name": "Aria",
        "_id": "8753452122"
      }
    ]

我想使用 Object.keys(employees )Object.values(employees ) 的索引,但我想不通。

2 个答案:

答案 0 :(得分:1)

您使用 Object.values 是正确的,但我会使用 Object.entries,因为它为您提供了属性名称及其值。然后是map

const result = Object.entries(employees).map(([name, value]) => ({...value, _id: name}));

现场示例:

const employees = {
  "0813562121": {
    "city": "Melbourne",
    "name": "Allison"
  },
  "8753452122": {
    "city": "Melbourne",
    "name": "Aria"
  }
};

const result = Object.entries(employees).map(([name, value]) => ({...value, _id: name}));

console.log(result);

使用:

  • Object.entries 从对象中获取一组 [name, value] 对。
  • map 将该数组的条目映射为不同的格式
  • 用于 map 回调的简洁形式的箭头函数(稍后详细介绍)。
  • map 回调的参数列表中进行解构以获取命名参数中的 namevalue
  • 在对象字面量中扩展语法,将对象自身的可枚举属性扩展到新对象中,并添加 _id 属性

或者,您可以修改对象而不是创建新对象,以便保留不可枚举或非自己的属性:

const result = Object.entries(employees).map(([name, value]) => {
    value._id = name;
    return value;
});

现场示例:

const employees = {
  "0813562121": {
    "city": "Melbourne",
    "name": "Allison"
  },
  "8753452122": {
    "city": "Melbourne",
    "name": "Aria"
  }
};

const result = Object.entries(employees).map(([name, value]) => {
    value._id = name;
    return value;
});

console.log(result);

关键在于,employeesresult 中都有 same 对象,而第一个对象是浅拷贝。

答案 1 :(得分:0)

试试这个

const employees = {
  "0813562121": {
    "city": "Melbourne",
    "name": "Allison"
  },
  "8753452122": {
    "city": "Melbourne",
    "name": "Aria"
  }
}

let jsonVariants =[];
Object.keys(employees).forEach(function(key) {
   let obj =employees[key];
   obj["_id"] =key;
   jsonVariants.push(obj); 
});

console.log(jsonVariants);

相关问题