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