Vue 通过公共字段,拼接两个对象数组

本文介绍了一种在前端展示工资项与工资值的方法,通过Vue和Element UI实现工资数据的拼接与展示,解决了后台数据分开返回的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端需要展示两个字段,工资项工资值。因为后台数据原因,后端是将这两个数据分开返回,这边我需要将这两个数组拼接到一个数据。

直接上代码。

1.HTML部分

<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>工资查询</title>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <script src="https://cdn.bootcss.com/vue/2.5.21/vue.common.dev.js"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
<div id="index" >
    <el-table
            :data="salaryCols"
            max-height="450">
        <el-table-column
                prop="name"
                align="center"
                label="工资项:">
        </el-table-column>
        <el-table-column
                prop="amount"
                align="center"
                label="金额(¥):">
        </el-table-column>
    </el-table>
</div>
</body>
</html>

2.js部分

new Vue({
        el: '#index',
        data: {
            salary: [   //工资列表
                {
                    wage1: 1001.1,
                },
                {
                    wage2: 30.3,
                },
                {
                    wage3: 200,
                }
            ],
            salaryCols:[   //工资项列表
                {
                    name:"工资",
                    value:"wage1"
                },{
                    name:"奖金",
                    value:"wage2"
                },{
                    name:"mate金",
                    value:"wage3"
                }
            ]
        },

        mounted(){
			this.jointData();
			console.log(this.salaryCols);
        },
        methods: {
            //将 工资拼接到工资项中农
            jointData(){
                var colLength = this.salaryCols.length;    //工资项长度
                var salaryLength = this.salary.length;     //工资长度
				//先遍历工资项
                for (var i=0; i<colLength; i++){
					//取出相同字段value
                    var value = this.salaryCols[i].value;
					//遍历工资
                    for (var j=0; j<salaryLength; j++){
                        var amount = this.salary[j][value];
						//如果金额取出来,不是undefined的话,说明字段对应起来的
                        if (amount !== undefined){
                            this.salaryCols[i].amount = amount;
                            break;
                        }
                    }
                }
            }
        }
    })

3.效果

 github上有我更多的笔记:Raray-chuan (兮川) · GitHub,欢迎stars与following,如果有问题可以在issue中向我咨询

关注我的公众号,获取更多关于后端、大数据的知识

<think>好的,我现在需要解决用户提出的关于如何逐项累加一个特定数组的问题。首先,用户提到的数组是data_ri,结构看起来像是一个二维数组,但用户给出的形式有点复杂:data_ri [63, -68, 68, -20, -41, -25, 69, -72, 54][63, -68, 68, -20, -41, -25, 69, -72, 54][0][0]。这里可能存在一些格式上的混淆,我需要先理清楚数据的结构。 首先,用户提供的数组可能是一个多维数组,或者是多个数组的组合。例如,可能有两个长度为9的数组,然后后面跟着两个[0]的索引。但用户的问题在于逐项累加,没有的值就加0。所以,我需要明确每个位置上的元素是什么,以及当某个位置没有元素时如何处理。 可能的解释是,data_ri 的结构是四维的,比如data_ri[i][j][k][l],但用户给出的示例中有两组长度为9的数组,后面跟着两个[0]。或许用户的意思是data_ri有两个主要的一维数组,每个数组有9个元素,然后后面两个[0]可能是指更深层次的索引,但可能在实际数据中不存在。因此,当用户尝试逐项累加时,如果某一项不存在,就加0。 接下来,我需要确定具体的累加方式。用户提到“逐项累加起来没有的就加0”,这可能指的是将对应位置的元素相加,如果某个数组在该位置没有元素,则视为0。例如,假设有两个数组,第一个数组有n个元素,第二个数组有m个元素,那么累加后的数组长度是max(n, m),每个位置是两个数组对应位置的和,不足的部分补0。 但用户给出的例子中,data_ri后面跟着两组相同的数组:[63, -68, 68, -20, -41, -25, 69, -72, 54],然后又有两个[0][0]。这可能表示data_ri是一个四维数组,比如data_ri[0][0]对应第一个数组,data_ri[1][0]对应第二个数组,但后面的索引可能不存在,导致需要处理越界的情况。 不过,这样的结构可能不太常见。另一种可能是用户误将多个索引写在一起,比如data_ri是一个二维数组,其中有两个元素,每个元素是一个长度为9的数组,然后用户想访问data_ri[0][0],但后面还有更多的索引,例如data_ri[0][0][0][0],这可能超出了数组的维度,导致不存在该元素,因此需要加0。 不过,这可能比较复杂。另一种可能是用户提供的数组结构有误,或者需要更明确的解释。但根据用户的问题,核心在于逐项累加,当元素不存在时加0,所以可能需要将多个数组在相同位置上的元素相加,不足的位置补0。 例如,假设有两个数组数组A: [63, -68, 68, -20, -41, -25, 69, -72, 54] 数组B: [63, -68, 68, -20, -41, -25, 69, -72, 54] 然后后面可能还有更多的数组,但用户可能只给出了这两个,而后续的索引可能是访问更深层的元素,但不存在,所以需要补0。 不过,用户给出的示例中,数组后面跟着[0][0],可能意味着每个数组后面还有两个0元素?或者这是索引操作?例如,data_ri是一个数组,其元素本身也是数组,比如data_ri[0]是第一个子数组,data_ri[1]是第二个子数组,依此类推。然后用户可能在访问更深层次的元素,比如data_ri[0][0],data_ri[0][1]等,但后面的索引可能越界,所以需要补0。 但根据用户的描述,“逐项累加起来没有的就加0”,这可能更倾向于将多个数组在相同位置上的元素相加,如果某个数组在该位置没有元素,则视为0。例如,如果有两个数组,长度分别为3和5,那么结果数组长度为5,前三个位置是两个数组对应元素的和,后两个位置是第二个数组的元素加上0。 但用户给出的例子中,两个数组都是长度9,所以逐项相加的话,结果也是一个长度9的数组,每个位置是两个数组对应元素之和。但用户后面还有[0][0],可能意味着更深层次的索引,比如每个元素本身又是数组,但可能不存在,所以需要累加时处理这些不存在的情况。 不过,这可能比较复杂,用户可能需要更简单的解释,即如何处理多个数组的逐项累加,当某些位置没有元素时补0。 现在,我需要确认用户的具体需求。用户给出的数组结构可能有误,或者需要更明确的解释。例如,用户可能的意思是data_ri的结构是这样的:data_ri包含多个数组,例如两个长度为9的数组,然后可能还有更多的数组,但用户想要将这些数组在相同位置上相加,如果某个数组在某个位置没有元素,则加0。 例如,假设data_ri是一个包含两个数组数组: data_ri = [ [63, -68, 68, -20, -41, -25, 69, -72, 54], [63, -68, 68, -20, -41, -25, 69, -72, 54] ] 然后用户想要将这两个数组逐项相加,结果每个位置是两个对应元素的和。但两个数组长度相同,所以结果也是每个位置的和,没有需要补0的情况。 但用户提到“没有的就加0”,可能意味着有更多的数组,其中某些数组长度较短。例如,如果有三个数组,前两个长度9,第三个长度5,那么结果数组长度9,前5个位置是三个数组对应元素的和,后4个位置是前两个数组的和加上0(第三个数组不存在这些位置)。 不过,根据用户提供的例子,可能只是两个长度相同的数组,所以逐项相加即可。但用户后面还写了[0][0],这可能意味着更深层次的索引,比如data_ri是一个四维数组,data_ri[0][0][0][0],但可能在某些维度上不存在,因此需要补0。 或者,用户可能误将索引写在了数组定义中,导致混淆。例如,用户可能想表达data_ri的某个元素是多个数组,但实际写法可能有误。 为了澄清,我需要假设用户的问题是关于如何将多个数组逐项相加,如果某些数组在某个位置没有元素,则视为0。例如,如果有多个数组,长度不一,如何将它们相加。 假设用户给出的例子中有两个数组,每个都是长度9,那么结果就是每个位置相加,例如: 第一个元素:63 + 63 = 126 第二个元素:-68 + (-68) = -136 依此类推,直到第九个元素:54 + 54 = 108 但用户提到“没有的就加0”,可能意味着如果某个数组在该位置没有元素,就加0。例如,如果有第三个数组,长度只有5,那么前5个位置加上第三个数组的元素,后4个位置加0。 不过,在用户给出的例子中,可能只有两个长度相同的数组,因此可能不需要补0。但用户的问题描述可能存在其他情况,需要进一步分析。 另一个可能是用户提到的数组结构是data_ri后面跟着多个索引,例如data_ri[63, -68,...][63, -68,...][0][0],这可能表示data_ri是一个函数或对象,接受多个参数,但这里可能存在语法混淆。例如,在Vue中,data通常是一个函数返回对象,但用户可能误写成了数组的形式。 或者,用户可能是在描述一个多层嵌套的数组,例如data_ri是一个四维数组,其中某些位置有数值,而其他位置没有,因此在累加时需要处理未定义的情况,将其视为0。 例如,data_ri的结构可能是这样的: data_ri = [ [ [63, -68, 68, -20, -41, -25, 69, -72, 54], [63, -68, 68, -20, -41, -25, 69, -72, 54] ], [ [0], [0] ] ] 然后用户想要累加所有元素,但每个位置可能在不同的层级中。例如,访问data_ri[0][0][0]得到63,data_ri[0][1][0]得到63,然后data_ri[1][0][0]得到0,data_ri[1][1][0]得到0,所以逐项累加的话,可能需要将所有这些值相加,但具体如何逐项需要明确。 不过,这种情况比较复杂,可能需要用户更明确的数据结构描述。但根据用户当前的问题,可能需要一个更通用的解法,即如何处理多个数组的逐项累加,补0处理。 总结来说,用户的问题是如何将多个数组逐项相加,当某个数组在某个位置没有元素时,视为0,然后求和。例如,数组A和数组B都是长度9,那么结果数组每个元素是A[i] + B[i],但如果存在数组C长度5,则结果数组前5个元素是A[i]+B[i]+C[i],后4个元素是A[i]+B[i]+0。 但根据用户给出的例子,可能只是两个长度相同的数组,所以直接相加即可,但用户可能希望了解如何处理更一般的情况,即数组长度不同的情况。 接下来,我需要给出一个逐步的解决方法,首先处理数组长度相同的情况,然后扩展到长度不同的情况,说明如何处理补0的情况。 例如,步骤可能包括: 1. 确定要累加的数组列表。 2. 找到最长的数组长度。 3. 对每个位置,从所有数组中取出该位置的元素(如果存在,否则取0),然后求和。 4. 将每个位置的和组成结果数组。 在用户给出的例子中,如果两个数组都是长度9,那么结果数组也是长度9,每个位置是两个对应元素的和。 例如: 数组1:63, -68, 68, -20, -41, -25, 69, -72, 54 数组2:63, -68, 68, -20, -41, -25, 69, -72, 54 累加结果:每个位置相加,得到126, -136, 136, -40, -82, -50, 138, -144, 108 但如果用户提到的后面还有[0][0],可能是指更深层次的索引,比如data_ri[0][0]是第一个数组,data_ri[1][0]是第二个数组,而data_ri[2][0]不存在,视为0,那么可能需要累加这些。但这种情况需要更明确的数据结构。 不过,用户的问题可能更简单,即如何将两个数组逐项相加,补0的情况可能不在当前例子中,但需要说明如何处理。 最后,我需要确保回答结构清晰,分步骤说明,并给出示例。</think>我们来逐步解决你提到的逐项累加问题。假设你的数据结构是多个数组,需要将 **相同位置** 的元素相加,若某数组在该位置无值则补 $0$。以下是具体步骤: --- ### **步骤 1:明确数据结构** 假设 `data_ri` 是一个包含多个数组的集合,例如: ```javascript data_ri = [ [63, -68, 68, -20, -41, -25, 69, -72, 54], [63, -68, 68, -20, -41, -25, 69, -72, 54], [0], // 第三个数组较短,仅一个元素 [0] // 第四个数组也较短 ]; ``` 这里包含 4 个数组,其中前两个长度为 9,后两个长度为 1。 --- ### **步骤 2:确定最大长度** 找到所有数组中最大的长度,决定最终结果的长度。此处最大长度为 $9$。 --- ### **步骤 3:逐项累加** 对每个位置 $i$(从 $0$ 到 $8$)执行以下操作: 1. 遍历所有数组,检查是否存在第 $i$ 个元素。 2. 若存在则取值,否则取 $0$。 3. 将所有值相加,得到结果数组的第 $i$ 项。 --- ### **步骤 4:具体计算** 以你的数据为例,逐项计算如下: | 位置 | 数组1 | 数组2 | 数组3 | 数组4 | 累加结果 | |------|-------|-------|-------|-------|-------------------| | 0 | 63 | 63 | 0 | 0 | $63+63+0+0=126$ | | 1 | -68 | -68 | 0 | 0 | $-68-68+0+0=-136$ | | 2 | 68 | 68 | 0 | 0 | $68+68+0+0=136$ | | 3 | -20 | -20 | 0 | 0 | $-20-20+0+0=-40$ | | 4 | -41 | -41 | 0 | 0 | $-41-41+0+0=-82$ | | 5 | -25 | -25 | 0 | 0 | $-25-25+0+0=-50$ | | 6 | 69 | 69 | 0 | 0 | $69+69+0+0=138$ | | 7 | -72 | -72 | 0 | 0 | $-72-72+0+0=-144$ | | 8 | 54 | 54 | 0 | 0 | $54+54+0+0=108$ | --- ### **最终结果** 累加后的数组为: $$[126, -136, 136, -40, -82, -50, 138, -144, 108]$$ --- ### **总结** - 若数组长度不同,短数组的缺失位置自动补 $0$。 - 通用方法适用于任意数量的数组和长度。 - 实际代码中可通过循环遍历所有索引,动态处理越界情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值