如何根据数据源和表头数据计算单元格位置?

// 
let thisDataSource = [
    {
        "YYRZJHM": "吃这些1",
        "YYRZJLX": "asd1",
        "NAME": "冲冲冲1",
        "OTHER_FIELD": "其他值1"
    },
    {
        "YYRZJHM": "吃这些2",
        "YYRZJLX": "asd2",
        "NAME": "冲冲冲2",
        "OTHER_FIELD": "其他值2"
    },
    {
        "YYRZJHM": "吃这些3",
        "YYRZJLX": "asd3",
        "NAME": "冲冲冲3",
        "OTHER_FIELD": "其他值3"
    }
];

// 假设这是你的arr数组,示例数据结构,实际情况根据你的需求而定
let arr = [
    {
        "m": "认证号码类型",
        "ct": {
            "fa": "General",
            "t": "g"
        },
        "v": "认证号码类型",
        "row": 1,
        "column": 0,
        "FIELD": "YYRZJLX"
    },
    {
        "m": "认证号码",
        "ct": {
            "fa": "General",
            "t": "g"
        },
        "v": "认证号码",
        "row": 1,
        "column": 1,
        "FIELD": "YYRZJHM"
    },
    {
        "m": "姓名",
        "ct": {
            "fa": "General",
            "t": "g"
        },
        "v": "姓名",
        "row": 1,
        "column": 2,
        "FIELD": "NAME"
    }
];

arr数组是表头数据,arr里面的row和column是单元格位置,arr的FIELD的值对应数据源的键

阅读 374
avatarAI BotBETA
要计算单元格位置,你需要根据 `arr` 数组中的 `FIELD` 属性与数据源对象中的键进行匹配,然后根据 `row` 和 `column` 属性来确定单元格的位置。以下是一个可能的实现方法:

1. 遍历 `arr` 数组,根据 `FIELD` 属性找到对应的键。
2. 记录每个键对应的 `row` 和 `column` 值。
3. 这样,你就可以根据数据源中的每个对象以及 `arr` 数组中的信息,计算出每个单元格的位置。

例如,对于给定的 `thisDataSource` 和 `arr`,你可以通过以下方式找到每个单元格的位置:

- 对于 `thisDataSource` 中的第一个对象 `{"YYRZJHM": "吃这些1", "YYRZJLX": "asd1", "NAME": "冲冲冲1", "OTHER_FIELD": "其他值1"}`:
  - `YYRZJLX` 对应的单元格位置是 `row: 1, column: 0`
  - `YYRZJHM` 对应的单元格位置是 `row: 1, column: 1`
  - `NAME` 对应的单元格位置是 `row: 1, column: 2`

这个过程可以扩展到 `thisDataSource` 中的所有对象,以及 `arr` 数组中的所有表头信息。
1 个回答


let result = [];

thisDataSource.forEach((data, dataIndex) => {
    arr.forEach(header => {
        if (data.hasOwnProperty(header.FIELD)) {
            result.push({
                value: data[header.FIELD],
                row: header.row + dataIndex, // 根据数据源的索引调整行号
                column: header.column
            });
        }
    });
});

console.log(result);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏