我有一个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' }])
}
您可以使用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 syntax和Array#push
方法。
this.rolesArr.push(...res)
您可以使用函数Object.entries
获取标签和值,然后使用函数reduce
构建所需的输出。
let obj = { 1: "System Admin", 2: "Internal Account Manager", 3: "CAT Manager", 4: "HR Admin", 5: "HR Manager", 6: "HR Recruiter", 7: "Candidate", 8: "Operations administrator"},
result = Object.entries(obj).reduce((a, [label, value]) => a.concat({label, value}), []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
只需通过更正您提供的代码来解决您的问题,以便您可以确定您做错了什么。
var 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" };
var entries = Object.entries(data);
var rolesArr = [];
for (var i = 0; i < entries.length; i++) {
this.rolesArr.push({ label: entries[0][1], value: entries[0][0] })
}
console.log(this.rolesArr);