Javascript 将对象转换为数组

Javascript 将对象转换为数组,javascript,angular,typescript,angular6,Javascript,Angular,Typescript,Angular6,我有来自API的数据,格式如下: this.userSkills = [ { skill_level: { skill: { id: 1, proficiency: "Beginner", name: "Core Java" } } }, ] 我想将它们映射到如下对象: [ {skillId: 1

我有来自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) 
});
如果我错了,请纠正我好吗

如果是,则您的问题在于
测试
,因为它是在
映射
函数中获取的

map
函数已返回新的转换数组,请检查

试试这个:

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
,它应该可以工作。

您可以声明并清空数组,并使用push方法形成对象数组,但我没有得到它;您已经使用map将它们转换为数组了吗?我尝试了,但是这个是.userSkills.map(value=>{const data={skillId:value.skill\u level.skill.id,skillproficience:value.skill\u level.skill,skillName:value.skill\u level.skill.name};const test=[]test.push(数据);console.log(test)});[{…}]0:{skillId:1,skillprofession:“初学者”,skillName:“核心Java”}长度:1 proto:Array(0)[{…}][{…}]但事实就是这样coming@nimeresam我将它们转换为对象请参阅下面的链接。