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'
})
})
网友评论