将对象转换为数组

convert object into array

我有来自 API 的数据,格式如下:

this.userSkills = [
    {
        skill_level: {
            skill: {
                id: 1,
                proficiency: "Beginner",
                name: "Core Java"
            }
        }
    },
]

我想将它们映射到像这样的对象中:

[
    {skillId: 1, skillProficiency: "Beginner", skillName: "Core Java"},
    {skillId: 7, skillProficiency: "Intermediate", skillName: "ReactJs"},
    {skillId: 2, skillProficiency: "Beginner", skillName: "Javascript"},
    {skillId: 27, skillProficiency: "Intermediate", skillName: "Common behavioral "},
    {skillId: 29, skillProficiency: "Beginner", skillName: "iOS"},
    {skillId: 34, skillProficiency: "Beginner", skillName: "API Testing"}
]

通过使用 map 运算符,我尝试将它们转换为对象,例如:

this.userSkills.map(value => { 
    const data = { 
        skillId: value.skill_level.skill.id, 
        skillProficiency: value.skill_level.proficiency, 
        skillName: value.skill_level.skill.name }; 
    const test = [] test.push(data); 
    console.log(test) 
});

像这样,但我希望它们是一个对象数组,以便我可以循环遍历它们,如何将它们转换为对象数组?

const dataInObject = {}; // Your data here
const dataArray = Object.keys(dataInObject).map(index=>dataInObject[index]);
console.log(dataArray);

正如我从你那里了解到的;你试过这个吗?

this.userSkills.map(value => { 
    const data = { 
        skillId: value.skill_level.skill.id, 
        skillProficiency: value.skill_level.proficiency, 
        skillName: value.skill_level.skill.name }; 
    const test = [] test.push(data); 
    console.log(test) 
});

如果我错了请纠正我?

如果是,则您的问题出在 test,因为它是在 map 函数中挖出的。

map 函数已经 return 一个新的转换数组,检查 documentation

试试这个:

this.newArr = this.userSkills.map(value => 
    ({ 
        skillId: value.skill_level.skill.id, 
        skillProficiency: value.skill_level.proficiency, 
        skillName: value.skill_level.skill.name
    })
);

并在 ngFor 中使用 newArr,应该可以。