vue.js数组中有多个子级,怎么把他们全部拼接到单个数组同一级中

2021-04-29 10:05发布

[图]

blob.png

6条回答
我是大脸猫
2楼 · 2021-04-29 10:35

定义个全局变量,用list或者map,然后在循环里面往这个集合里塞

灰机带翅膀
3楼 · 2021-04-29 13:48

获取服务器传来的数组数据进行,找出其中价格相同的进行数量相加,合并该段数据:


/** 先将传来的订单列表进行四舍五入,再将价格相同的订单进行合并


* @param {Object} orderList :要进行操作的订单


*/


async mergeOrder(orderList) {

console.log(orderList);


let contrast_1 = JSON.parse(JSON.stringify(orderList));


for(let x in contrast_1){

contrast_1[x].trade_price = this.toDecimal(contrast_1[x].trade_price,this.digit_num); //进行四舍五入


}


let contrast_2 = JSON.parse(JSON.stringify(contrast_1)); //再复制一个用来做对比


let containers = []; //存放已经合并后的数据


/* 循环找出相同的值 */


console.log(contrast_1);


for(let i in contrast_1){

console.log(contrast_1[i]);


let container_list = {

trade_num: contrast_1[i].trade_num,


trade_order_id: contrast_1[i].trade_order_id,


trade_price: contrast_1[i].trade_price,


trade_type: contrast_1[i].trade_type


}


for(let m in contrast_2){

if(!contrast_2[m]){

if(m == i){

container_list = null;


break; //如果该值为空值就跳过


}


continue;


}


if(contrast_1[i].trade_price == contrast_2[m].trade_price){

if(m == i){

contrast_2[m] = null;


continue;


}


/* 如果遇到没有合并的相同价格就进行累加 */


container_list = {

trade_num: parseInt(container_list.trade_num) + parseInt(contrast_2[m].trade_num),


trade_order_id: container_list.trade_order_id + '--' + contrast_2[m].trade_order_id,


trade_price: container_list.trade_price,


trade_type: container_list.trade_type


}


contrast_2[m] = null; //销毁该次循环的值,防止多次循环到该值


}


}


console.log(container_list);


if(!container_list){

//如果为空值就直接进行下次循环


continue;


}


/* 将该次循环得到的数据放入容器内 */


containers.push(container_list);


console.log(containers);


}


console.log(containers);


return containers;


}


/**


* @param {number} x: 要进行操作的数字


* @param {number} digit: 要达到的精度,比如小数点后8位,不足补0


*/


toDecimal(x, digit) {

let f = parseFloat(x);


let index = Math.pow(10, digit);


if (isNaN(f)) {

return false;


}


f = Math.round(x * index) / index; //四舍五入


let s = f.toString();


let rs = s.indexOf('.');


if (rs < 0>

rs = s.length;


if (digit > 0) {

s += '.';


}


}


if (digit > 0) {

while (s.length <= rs + digit) {

s += '0';


}


}


return s;


}

freediandianer
4楼 · 2021-04-29 18:01
//json 数据,这里你用的是截图,所以我这边就没有把所有数据都摘下来,就放了两段做一下示范
$json = '[
{"id0": 0},
{"time0""6:00-7:00"},
{"number_r0""150"},
{"number_y0""140"},
{"number_w0""10"},
{"number_money0""55256"},
 
{"id1": 1},
{"time1""7:00-8:00"},
{"number_r1""250"},
{"number_y1""200"},
{"number_w1""50"},
{"number_money1""1000000"}
]';
 
//把 json 对象转为数组
$arr = json_decode($json,true);
//初始化总结果返回数组
$arr2 array();
//打印输出 json 对象转化后的数组
//var_dump($arr);
//初始化子循环次数
$ii = 0;
//for 父循环 这里观察你的数据得出规律与需求后是以每 6 个独立对象为一个数组的条件
for($i = 0; $i count($arr) / 6; $i++) {
//规范写法 初始化子集对象 防止高版本php报 count 空对象错误
$arr2[$i] = array();
//这里子循环条件从 0 开始 且循环次数≯整个 json 数据转化后的数组
while(count($arr2[$i]) + 6 < count($arr)) {
/*
//调试对象 可以删除
//$arr2[$i][] = $arr[$ii];
//echo ($ii + 6)."
";
//echo $ii;
*/
//遍历取值后的对象 分别取得键名与键值
foreach($arr[$iias $key => $value) {
//将子集数据写入总结果返回数组中
$arr2[$i][$key] = $value;
}
//子循环次数叠加
$ii++;
}
}
//打印输出后的结果数组
//print_r($arr2);
//重新把数组转化为 json 
echo json_encode($arr2);


小小收藏家
5楼 · 2021-05-08 17:55

*/


async mergeOrder(orderList) {

console.log(orderList);


let contrast_1 = JSON.parse(JSON.stringify(orderList));


for(let x in contrast_1){

contrast_1[x].trade_price = this.toDecimal(contrast_1[x].trade_price,this.digit_num); //进行四舍五入


}


let contrast_2 = JSON.parse(JSON.stringify(contrast_1)); //再复制一个用来做对比


let containers = []; //存放已经合并后的数据


/* 循环找出相同的值 */


console.log(contrast_1);


for(let i in contrast_1){

console.log(contrast_1[i]);


let container_list = {

trade_num: contrast_1[i].trade_num,


trade_order_id: contrast_1[i].trade_order_id,


trade_price: contrast_1[i].trade_price,


trade_type: contrast_1[i].trade_type


}


for(let m in contrast_2){

if(!contrast_2[m]){

if(m == i){

container_list = null;


break; //如果该值为空值就跳过


}


continue;


}


if(contrast_1[i].trade_price == contrast_2[m].trade_price){

if(m == i){

contrast_2[m] = null;


continue;


}


/* 如果遇到没有合并的相同价格就进行累加 */


container_list = {

trade_num: parseInt(container_list.trade_num) + parseInt(contrast_2[m].trade_num),


trade_order_id: container_list.trade_order_id + '--' + contrast_2[m].trade_order_id,


trade_price: container_list.trade_price,


trade_type: container_list.trade_type


}


contrast_2[m] = null; //销毁该次循环的值,防止多次循环到该值


}


}


console.log(container_list);


if(!container_list){

//如果为空值就直接进行下次循环


continue;


}


/* 将该次循环得到的数据放入容器内 */


containers.push(container_list);


console.log(containers);


}


console.log(containers);


return containers;


}


/**


* @param {number} x: 要进行操作的数字


* @param {number} digit: 要达到的精度,比如小数点后8位,不足补0


*/


toDecimal(x, digit) {

let f = parseFloat(x);


let index = Math.pow(10, digit);


if (isNaN(f)) {

return false;


}


f = Math.round(x * index) / index; //四舍五入


let s = f.toString();


let rs = s.indexOf('.');


if (rs < 0>

rs = s.length;


if (digit > 0) {

s += '.';


}


}


if (digit > 0) {

while (s.length <= rs + digit) {

s += '0';


}


}


return s;


}


清屿
6楼 · 2021-05-09 16:59

定义个全局变量,用list或者map,在循环里面往这个集合里塞

zgzbs
7楼 · 2021-11-24 10:49

methods:{
setData(){
let id = [1,2,3]
let records = [{val:''},{val:''},{val:''} ]
id.map((v,i)=>{
if(records [i]){
records [i].val = v
}
})

}

}

相关问题推荐

  • 回答 120

    相对前几年来说,要高上不少了,毕竟入行的人也是越来越多了,基础的工作对应想要参与的人群基数越来越大,但是对于高端人才的需求还是很多,人才还是相对稀缺性的。所以,想要学web或者其他技术也一样,别等,别观望。web前端就业方向特别多包括web前端开发...

  • 回答 25

    相对定位和绝对定位是定位的两种表现形式,区别如下:一、主体不同1、相对定位:是设置为相对定位的元素框会偏移某个距离。2、绝对定位:absolute 脱离文档流,通过 top,bottom,left,right 定位。二、特点不同1、相对定位:在使用相对定位时,无论是否进行移...

  • 抓包是什么意思?2020-04-01 17:36
    回答 7
    已采纳

    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。抓包可以通过抓包工具来查看网络数据包内容。通过对抓获的数据包进行分析,可以得到有用的信息。目前流行的...

  • 回答 89

    常用的前端框架有Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架等等

  • 回答 65
    已采纳

    前端是目的就业前景非常不错的一个计算机技术,但是自学的话还是有一定难度的,网络上自学是碎片化的,同时互联网技术跟新换代快,自己的话比较吃力也学习不到最新的技术。

  • SSR 是什么意思?2020-03-20 18:56
    回答 6

    SSR就是一台服务器,可以利用 SSR 在远程的服务器上配置 SSR,使其能够成为 SSR 节点,这样本地电脑或者其它设备利用 SSR 节点实现 VPN 或者远程上网及游戏加速等方面。ShadowsocksR(简称 SSR)是 Shadowsocks 分支,在 Shadowsocks 的基础上增加了一些数据...

  • 回答 52
    已采纳

    计算机培训方向比较多,建议找适合自己的方向选择培训编程类:JAVA、WEB、Python、C/C++、C#等测试类:软件测试运维类:云计算、网络安全设计类:UI设计、3D建模等

  • 回答 11

    1、代码判断xAxis: {type: &#39;time&#39;,splitLine: {show: false},interval: 3600, // 设置x轴时间间隔axisLabel: {formatter: function(value, index) {return liangTools.unix2hm(value)}}},首先要把xAxis 显示类型设置成time,然后设置对应X轴......

  • 回答 8

    HTML5 + CSS + JavaScript 开发 跨平台重用代码 

  • 回答 4

    采用rem单位自动响应,并提供独有栅格化系统快速定义宽高、边距节省css代码量,同时总结各大型移动端网页,提供一套ui颜色搭配规范,尺寸规范,字体规范等。

  • 回答 10

    iView UI、ioni、SUI

  • 回答 6

     jQTouch 

  • 回答 4

    如果只是普通的移动端用vue react 或者dva 如果是要编译成小程序什么的或者混生 就用uni-app(对应vue语法)taro(对应react) 或者纯原生 这个没有限制的,自己怎么舒服怎么来

  • 回答 4

    因为可以运用在网页和小程序的开饭中,而且开源,用着便宜,企业都很喜欢

  • 回答 10

    一、Visual Studio Code下载地址:https://code.visualstudio.com/微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。Visual Stud...

  • 回答 9

    jQuery自带淡入淡出效果 https://www.w3school.com.cn/jquery/jquery_fade.asp 看看这个 

没有解决我的问题,去提问