javascript - konverter objekt til array


Jeg har data som kommer fra API, i et format som:

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

Jeg vil kartlegge dem til objekter slik at de blir som:

[
    {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"}
]

Som ved å bruke map-operatoren har jeg prøvd å konvertere dem til objekter, som:

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) 
});

slik, men jeg vil ha dem som et array av objekter slik at jeg kan løkke over dem, hvordan kan jeg konvertere dem til et array av objekter?

Svar #1

Som jeg forsto fra deg; prøvde du dette?

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) 
});

Rett meg hvis jeg tar feil?

Hvis ja, er problemet ditt med test, fordi den er avgrenset inne i map-funksjonen.

map-funksjonen returnerer allerede et nytt konvertert array, sjekk dokumentasjonen.

prøv dette:

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

Og bruk newArr i ngFor, det bør fungere.

Svar #2

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

Relaterte artikler