js 배열 대상, 지정 한 데이터 형식 으로 병합

원시 배열
const arr = [
  {
    '  ': 'red',
    '  ': '100',
    '  ': 'aaa'
  },
  {
    '  ': 'blue',
    '  ': '200',
    '  ': 'aaa'
  }
]

포맷 된 배열
const array = [
  {
    'specificationName': '  ',
    'specificationValueList': [
      { 'specificationValue': 'red' },
      { 'specificationValue': 'blue' }
    ]
  },
  {
    'specificationName': '  ',
    'specificationValueList': [
      { 'specificationValue': '100' },
      { 'specificationValue': '200' }
    ]
  },
  { 'specificationName': '  ',
    'specificationValueList': [
      { 'specificationValue': 'aaa' }
    ]
  }
]

이루어지다
/**
 *     
 * @param targetJson     
 * @param isUnique     
 * @returns {Array}      
 */
function parseJson(targetJson, isUnique) {
  const map = {}
  const arr = []
  targetJson.forEach(item => {
    // key:value       
    for (const [key, value] of Object.entries(item)) {
      if (!map[key]) {
        map[key] = []
      }
      map[key].push(value)
    }
  })
  
  //             
  for (const [key, value] of Object.entries(map)) {
    const obj = {
      specificationName: key,
      specificationValueList: []
    }
    
    //     
    const uniqueValue = isUnique ? [...new Set(value)] : value
    
    //   value   
    uniqueValue.forEach(item => {
      obj.specificationValueList.push({
        specificationValue: item
      })
    })
    arr.push(obj)
  }
  return arr
}

좋은 웹페이지 즐겨찾기