一维数组变二维数组

本文介绍了如何根据特定参数改变数据格式,以适应版本号变化的情况。通过示例代码展示了将一维数组转换为特定格式的过程,以便在前端使用el-select组件渲染数据。同时,文章提到了数据渲染的实现方法,利用版本号作为选择器的值,动态更新下拉选项。
摘要由CSDN通过智能技术生成

 前言

当出现相同的参数 根据另一个特定参数来改变数据

改变原因  如下图 出现相同的名字但是版本号不同  下拉框数据是 版本号  改变版本号时候改变这一条数据 所以 一个大数组中分为每个对象  每个对象两个参数 第一个参数:  是选中的版本号 第二个参数是相同名字的数据组成一个对象 key是版本号 对应他的数据


一、上图的数据格式(改变后)

        selectedIndex选中版本号

                versionData 拥有相同名字的版本号有 4 和 8 

                4 和 8 是版本号 对应的对象是数据

二、实现步骤

1.改变数据格式

 代码如下 

dataset_version是版本号(根据这个来改变数据的), dataset_name为名字(数据中相同的)

     setData(response) { // 改变数组的格式 一维数组
            const data = JSON.parse(JSON.stringify(response));
            const resultArr = data.map(item => {
                return {
                    selectedIndex: item.dataset_version,
                    versionData: {
                        [item.dataset_version]: item
                    }
                };
            });
            return resultArr.reduce((pre, next) => {
                if (!pre.length) {
                    pre.push(next);
                    return pre;
                }
                const finderIndex = pre.findIndex(item => {
                    return Object.keys(item.versionData).some((itema) => {
                        return item.versionData[itema].dataset_name === next.versionData[next.selectedIndex].dataset_name;
                    });
                });
                if (~finderIndex) {
                    pre[finderIndex].versionData[next.selectedIndex] = next.versionData[next.selectedIndex];
                    return pre;
                }
                pre.push(next);
                return pre;
            }, []);
        },

2. 渲染数据

代码如下(示例):

 <el-select v-if="item.label==='数据集版本'" v-model="scope.row[item.prop]" @change="tabelRowchange(scope.row, scope.$index)">
                        <el-option v-for="(optItem,opIndex) in Object.keys(tableDatas[scope.$index].versionData)" :key="opIndex" :value="optItem" :label="optItem"/>
                    </el-select>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值