我如何映射来自JSON的数据并完全按照我的描述构建结果

时间:2018-02-12 11:00:02

标签: javascript arrays json

我有 { skills: { extracted: [ {value: 'PHP'}, {value: 'JavaScript'}, {value: 'Python'} ] }, experience : { jobs : [ { date_range : { value : "September 2014 to January 2015" }, company : { value : "Direct Skill Systems LLC" }, title : { "value" : "Senior " } }, { date_range : { value : "October 2013 to January 2014" }, company : { value : "Seven Smarts LLC" }, skills : [ { value : "C#4 " } ] }, { date_range : { value : "November 2012 to February 2013" }, company : { value : "Haypost CJSC" }, title : { value : "Software Developer" }, skills : [ { value : "C#2 " }, { value : "WinForms " } ] }, { date_range : { value : "April 2007 to February 2012" }, company : { value : "Digamma LLC" }, skills : [ { value : "C#3" } ] }, { date_range : { value : "June 2005 to June 2007" }, company : { value : "UITE" }, skills : [ ] }, { date_range : { value : "February 2005 to May 2005" }, company : { value : "Opensourcearmenia" }, title : { value : "Web Developer" }, skills : [ ] }, { date_range : { value : "January 2002 - April 2002" }, title : {}, skills : [] } ] }, education: { institutions: [ { name: { value: "American University" }, date_range: { value: "July 2000 - November 2000" } }, { name: { value: "State Engineering University, Master" }, date_range: { value: "September 1985 - July 1992" } }, { name: { value: "M. Sar #8 School" }, date_range: { value: "September 1975 - July 1985" } } ] } } 数据中的对象。

map

我如何能够 { children: [ { name: 'skills', children2: [ {name: 'PHP'}, {name: 'JavaScript'}, {name: 'Python'} } ] } 来自JSON的数据并完全按照我的描述构建结果。

var input = {
  skills: {
    extracted: [{
        value: 'PHP'
      },
      {
        value: 'JavaScript'
      },
      {
        value: 'Python'
      }
    ]
  },

  experience: {
    jobs: [{
        date_range: {
          value: "September 2014 to January 2015"
        },

        company: {
          value: "Direct Skill Systems LLC"
        },
        title: {
          "value": "Senior "
        }
      },
      {
        date_range: {
          value: "October 2013 to January 2014"
        },
        company: {
          value: "Seven Smarts LLC"
        },
        skills: [{
          value: "C#4 "
        }]
      },
      {
        date_range: {
          value: "November 2012 to February 2013"
        },
        company: {
          value: "Haypost CJSC"
        },
        title: {
          value: "Software Developer"
        },
        skills: [{
            value: "C#2 "
          },
          {
            value: "WinForms "
          }
        ]
      },
      {
        date_range: {
          value: "April 2007 to February 2012"
        },
        company: {
          value: "Digamma LLC"
        },
        skills: [{
          value: "C#3"
        }]
      },
      {
        date_range: {
          value: "June 2005 to June 2007"
        },
        company: {
          value: "UITE"
        },
        skills: [

        ]
      },
      {
        date_range: {
          value: "February 2005 to May 2005"
        },
        company: {
          value: "Opensourcearmenia"
        },
        title: {
          value: "Web Developer"
        },
        skills: [

        ]
      },
      {
        date_range: {
          value: "January 2002 - April 2002"
        },
        title: {},
        skills: []
      }
    ]
  },

  education: {
    institutions: [{
        name: {
          value: "American University"
        },
        date_range: {
          value: "July 2000 - November 2000"
        }
      },
      {
        name: {
          value: "State Engineering University, Master"
        },
        date_range: {
          value: "September 1985 - July 1992"
        }
      },
      {
        name: {
          value: "M. Sar #8 School"
        },
        date_range: {
          value: "September 1975 - July 1985"
        }
      }
    ]
  }
}

var data = {
    children: [
        {
            name: 'Skills',
            children2: input.skills.extracted.map(skill => ({name:skill.value}))
        },
        {
            name: 'Experience',
            children2: input.experience.jobs.map(job => ({name:job.date_range.value} ))
        },
        {
            name: 'Education',
            children2: input.education.institutions.map(edu => ({name:edu.name.value, children2: [{name:edu.date_range.value}]} ))
        },
    ]
};

console.log(data);

我利用了答案Jamiec

{{1}}

1 个答案:

答案 0 :(得分:2)

您只想map skills.extracted数组,并按照您的描述完全构建结果:

var input = {
  skills: {
    extracted: [
      {value: 'PHP'},
      {value: 'JavaScript'},
      {value: 'Python'}
    ]
  }
}

var output = {
        children: [
            {
                name: 'skills',
                children2: input.skills.extracted.map(skill => ({name:skill.value}))
            }
       ]
    }
    
console.log(output);