Javascript 将对象转换为数组
我有来自API的数据,格式如下:Javascript 将对象转换为数组,javascript,angular,typescript,angular6,Javascript,Angular,Typescript,Angular6,我有来自API的数据,格式如下: this.userSkills = [ { skill_level: { skill: { id: 1, proficiency: "Beginner", name: "Core Java" } } }, ] 我想将它们映射到如下对象: [ {skillId: 1
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我将它们转换为对象请参阅下面的链接。