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 作者所有,保留所有权利。