首页 > 解决方案 > 推送数组中的值以匹配特定格式

问题描述

我有一个 api 给我我试图推入我的数组的值。我的数组的结构是这样的

this.rolesArr = [
  { label: 'Admin', value: '1' },
  { label: 'Manager', value: '2' },
  { label: 'Recruiter', value: '3' },
  { label: 'Operational', value: '4' }
];

我收到的数据是这样的

{1: "System Admin", 2: "Internal Account Manager", 3: "CAT Manager", 4: "HR Admin", 5: "HR Manager", 6: "HR Recruiter", 7: "Candidate", 8: "Operations administrator"}

如何将其推送到数组以匹配结构?

我正在尝试这个,但被卡住了

for(let i = 0; i < roles.roles.length; i++) {
  this.rolesArr.push([ { label: , value: '1' }])
}

标签: javascriptarraysangular

解决方案


您可以使用Object.entries将键值对作为数组获取,然后使用Array#map方法生成数组。

let data = {1: "System Admin", 2: "Internal Account Manager", 3: "CAT Manager", 4: "HR Admin", 5: "HR Manager", 6: "HR Recruiter", 7: "Candidate", 8: "Operations administrator"};

let res = Object.entries(data).map(([value, label])=>({ label, value }))

console.log(res)

要将这些值添加到现有数组中,请使用带有方法的Spread 语法。Array#push

this.rolesArr.push(...res)

推荐阅读