Skip to content

mapping

js
mapping({ data, fieldNames, expand, treeFieldName, keepOtherFields })

将列表数据映射成新的数据结构

参数

名称说明类型默认值
data数据列表array-
fieldNames字段名object-
expand扩展数据object-
treeFieldName子节点字段名string-
keepOtherFields是否保留其他字段booleanfalse

代码演示

基础用法

js
const data = [
  { id: '1', title: '选项1', number: 1 },
  { id: '2', title: '选项2', number: 2 },
]

const list = mapping({
  data,
  filedNames: {
    key: 'id',
    label: 'title',
    value: 'number',
  },
})

console.log(list)
json
[
  {
    "key": "1",
    "label": "选项1",
    "value": 1
  },
  {
    "key": "2",
    "label": "选项2",
    "value": 2
  }
]

扩展数据

使用函数也可实现相同的功能

js
const data = [
  { id: '1', title: '选项1', number: 1 },
  { id: '2', title: '选项2', number: 2 },
]

const list = mapping({
  data,
  filedNames: {
    key: 'id',
    label: 'title',
    value: 'number',
  },
  expand: {
    active: true
  }
})

console.log(list)
json
[
  {
    "key": "1",
    "label": "选项1",
    "value": 1,
    "active": true
  },
  {
    "key": "2",
    "label": "选项2",
    "value": 2,
    "active": true
  }
]

数结构

js
const data = [
  {
    id: '1',
    title: '选项1',
    number: 1,
    childList: [
      { id: '1', title: '选项1', number: 1 },
      { id: '2', title: '选项2', number: 2 },
    ],
  },
  {
    id: '2',
    title: '选项2',
    number: 2,
    childList: [
      { id: '1', title: '选项1', number: 1 },
      { id: '2', title: '选项2', number: 2 },
    ],
  },
  { id: '3', title: '选项3', number: 3 },
  { id: '4', title: '选项4', number: 4 },
]

const list = mapping({
  data,
  filedNames: {
    key: 'id',
    label: 'title',
    value: 'number',
    children: 'childList',
  },
  treeFieldName: 'childList',
})

console.log(list)
js
;[
  {
    key: '1',
    label: '选项1',
    value: 1,
    children: [
      { key: '1', label: '选项1', value: 1 },
      { key: '2', label: '选项2', value: 2 },
    ],
  },
  {
    key: '2',
    label: '选项2',
    value: 2,
    children: [
      { key: '1', label: '选项1', value: 1 },
      { key: '2', label: '选项2', value: 2 },
    ],
  },
  { key: '3', label: '选项3', value: 3 },
  { key: '4', label: '选项4', value: 4 },
]

保留字段

js
const data = [
  { id: '1', title: '选项1', number: 1 },
  { id: '2', title: '选项2', number: 2 },
]

const list = mapping({
  data,
  filedNames: {
    key: 'id',
    label: 'title',
    value: 'number',
  },
  keepOtherFields: true,
})

console.log(list)
json
[
  {
    "id": "1",
    "title": "选项1",
    "number": 1,
    "key": "1",
    "label": "选项1",
    "value": 1
  },
  {
    "id": "2",
    "title": "选项2",
    "number": 2,
    "key": "2",
    "label": "选项2",
    "value": 2
  }
]

使用函数

js
const data = [
  { id: '1', title: '选项1', number: 1 },
  { id: '2', title: '选项2', number: 2 },
]

const list = mapping({
  data,
  filedNames: {
    key: 'id',
    label: 'title',
    value: 'number',
    alias: (item, index, array) => {
      return `${item.title}-${index}`
    },
  },
  keepOtherFields: true,
})

console.log(list)
json
[
  {
    "key": "1",
    "label": "选项1",
    "value": 1,
    "alias": "选项1-0"
  },
  {
    "key": "2",
    "label": "选项2",
    "value": 2,
    "alias": "选项2-1"
  }
]

本文档内容版权为 XYAdmin 作者所有,保留所有权利。