美文网首页
数组转化为对象

数组转化为对象

作者: lessonSam | 来源:发表于2020-08-11 12:36 被阅读0次
 const arr2map = (arr = [], key = 'id', valueKey = '') => {
  let result = {}

  arr.map((item = {}) => {
    if (item.children && item.children.length) {
      console.log(item.children)
      Object.assign(result, arr2map(item.children, key, valueKey))
    } else {
      result[item[`${key}`]] = valueKey ? item[`${valueKey}`] : item
    }
  })

  return result
 }

加个测试用例吧

import { arr2map } from './arr2map'

test('lang.arr2map', () => {
  let arr = [
    {
      id: 1,
      name: 'name1',
      value: 'value1'
    },
    {
      id: 2,
      name: 'name2',
      value: 'value2'
    }
  ]
  let idNameMap = arr2map(arr, 'id', 'name')
  console.log(idNameMap)
  let idValueMap = arr2map(arr, 'id', 'value')
  let idMap = arr2map(arr, 'id')
  let nameValueMap = arr2map(arr, 'name', 'value')

  expect(idNameMap).toEqual({
    1: 'name1',
    2: 'name2'
  })

  expect(idValueMap).toEqual({
    1: 'value1',
    2: 'value2'
  })

  expect(idMap).toEqual({
    1: {
      id: 1,
      name: 'name1',
      value: 'value1'
    },
    2: {
      id: 2,
      name: 'name2',
      value: 'value2'
    }
  })

  expect(nameValueMap).toEqual({
    name1: 'value1',
    name2: 'value2'
  })
})

相关文章

网友评论

      本文标题:数组转化为对象

      本文链接:https://www.haomeiwen.com/subject/nknedktx.html