AI助手支持GPT4.0
一维数组循环按条件合并给二维数组的问题,逻辑实在想不通了,请教各位大神?The problem of merging one-dimensional array loops into two-dimensional arrays according to conditions, the logic is really hard to figure out, please ask the gods?
一维数组循环按条件合并给二维数组的问题,逻辑实在想不通了,请教各位大神?
var sensorList:[ {"id":10000,"category": "sensor","name": "温度","value": "1"}, {"id":10001,"category": "sensor","name": "湿度","value": "2"}, {"id":10002,"category": "sensor","name": "气压","value": "3"}, {"id":10003,"category": "sensor","name": "光照","value": "4"}, {"id":10004,"category": "sensor","name": "风速","value": "5"}, {"id":10005,"category": "sensor","name": "雨量","value": "6"}, {"id":10006,"category": "sensor","name": "PM2.5","value": "20"}, {"id":10007,"category": "sensor","name": "PM10","value": "21"}, {"id":10008,"category": "sensor","name": "风向","value": "37"}, {"id":10009,"category": "sensor","name": "风向","value": "38"}, {"id":10000,"category": "sensorUnit","name": "℃","value": "1"}, {"id":10101,"category": "sensorUnit","name": "%","value": "2"}, {"id":10102,"category": "sensorUnit","name": "kPa","value": "3"}, {"id":10103,"category": "sensorUnit","name": "kLux","value": "4"}, {"id":10104,"category": "sensorUnit","name": "m/s","value": "5"}, {"id":10105,"category": "sensorUnit","name": "mm/h","value": "6"}, {"id":10106,"category": "sensorUnit","name": "ug/m3","value": "20"}, {"id":10107,"category": "sensorUnit","name": "ug/m3","value": "21"}, {"id":10108,"category": "sensorUnit","name": "°","value": "37"}, {"id":10109,"category": "sensorUnit","name": "","value": "38"}, {"id":10002,"category": "windDir","name": "北","value": "16"}, {"id":10003,"category": "windDir","name": "北偏东","value": "1"}, {"id":10004,"category": "windDir","name": "东北","value": "2"}, {"id":10005,"category": "windDir","name": "东偏北","value": "3"}, {"id":10006,"category": "windDir","name": "东","value": "4"}, {"id":10007,"category": "windDir","name": "东偏南","value": "5"}, {"id":10008,"category": "windDir","name": "东南","value": "6"}, {"id":10009,"category": "windDir","name": "南偏东","value": "7"}, {"id":10000,"category": "windDir","name": "南","value": "8"}, {"id":10101,"category": "windDir","name": "南偏西","value": "9"}, {"id":10102,"category": "windDir","name": "西南","value": "10"}, {"id":10103,"category": "windDir","name": "西偏南","value": "11"}, {"id":10104,"category": "windDir","name": "西","value": "12"}, {"id":10105,"category": "windDir","name": "西偏北","value": "13"}, {"id":10106,"category": "windDir","name": "西北","value": "14"}, {"id":10107,"category": "windDir","name": "北偏西","value": "15"}, {"id":10108,"category": "windDir","name": "静风","value": "17"}, {"id":10109,"category": "windDir","name": "静风","value": "18"} ], var monitorList:[ { id: 10001382, name: "测试01", listsensor:[ {monitorid:10001382,sensorid:1,value: 11.1}, {monitorid:10001382,sensorid:2,value: 22.2}, {monitorid:10001382,sensorid:37,value: 180}, {monitorid:10001382,sensorid:38,value: 2} ]}, { id: 10001383, name: "测试02", listsensor:[ {monitorid:10001383,sensorid:3,value: 11.1}, {monitorid:10001383,sensorid:4,value: 22.2}, {monitorid:10001383,sensorid:37,value: 180}, {monitorid:10001383,sensorid:38,value: 2} ]} ]/* newList:[ {id: 10001382,name: "测试01",listsensor:[ {monitorid:10001382,sensorid:1,value: 11.1,name:"温度",unit:"℃"}, {monitorid:10001382,sensorid:2,value: 22.2,name:"湿度",unit:"%"}, {monitorid:10001382,sensorid:37,value: 180,name:"风向",unit:"°"}, {monitorid:10001382,sensorid:38,value: 4,name:"风向",unit:"东"} ]}, {id: 10001383,name: "测试02",listsensor:[ {monitorid:10001383,sensorid:3,value: 11.1,name:"气压",unit:"kPA"}, {monitorid:10001383,sensorid:4,value: 22.2,name:"光照",unit:"kLux"}, {monitorid:10001383,sensorid:37,value: 180,name:"风向",unit:"°"}, {monitorid:10001383,sensorid:38,value: 2,name:"风向",unit:"东北"} ]}] */
//数组1var sensorList:[ {"id":10000,"category": "sensor","name": "温度","value": "1"}, {"id":10001,"category": "sensor","name": "湿度","value": "2"}, {"id":10002,"category": "sensor","name": "气压","value": "3"}, {"id":10003,"category": "sensor","name": "光照","value": "4"}, {"id":10004,"category": "sensor","name": "风速","value": "5"}, {"id":10005,"category": "sensor","name": "雨量","value": "6"}, {"id":10006,"category": "sensor","name": "PM2.5","value": "20"}, {"id":10007,"category": "sensor","name": "PM10","value": "21"}, {"id":10008,"category": "sensor","name": "风向","value": "37"}, {"id":10009,"category": "sensor","name": "风向","value": "38"}, {"id":10000,"category": "sensorUnit","name": "℃","value": "1"}, {"id":10101,"category": "sensorUnit","name": "%","value": "2"}, {"id":10102,"category": "sensorUnit","name": "kPa","value": "3"}, {"id":10103,"category": "sensorUnit","name": "kLux","value": "4"}, {"id":10104,"category": "sensorUnit","name": "m/s","value": "5"}, {"id":10105,"category": "sensorUnit","name": "mm/h","value": "6"}, {"id":10106,"category": "sensorUnit","name": "ug/m3","value": "20"}, {"id":10107,"category": "sensorUnit","name": "ug/m3","value": "21"}, {"id":10108,"category": "sensorUnit","name": "°","value": "37"}, {"id":10109,"category": "sensorUnit","name": "","value": "38"}, {"id":10002,"category": "windDir","name": "北","value": "16"}, {"id":10003,"category": "windDir","name": "北偏东","value": "1"}, {"id":10004,"category": "windDir","name": "东北","value": "2"}, {"id":10005,"category": "windDir","name": "东偏北","value": "3"}, {"id":10006,"category": "windDir","name": "东","value": "4"}, {"id":10007,"category": "windDir","name": "东偏南","value": "5"}, {"id":10008,"category": "windDir","name": "东南","value": "6"}, {"id":10009,"category": "windDir","name": "南偏东","value": "7"}, {"id":10000,"category": "windDir","name": "南","value": "8"}, {"id":10101,"category": "windDir","name": "南偏西","value": "9"}, {"id":10102,"category": "windDir","name": "西南","value": "10"}, {"id":10103,"category": "windDir","name": "西偏南","value": "11"}, {"id":10104,"category": "windDir","name": "西","value": "12"}, {"id":10105,"category": "windDir","name": "西偏北","value": "13"}, {"id":10106,"category": "windDir","name": "西北","value": "14"}, {"id":10107,"category": "windDir","name": "北偏西","value": "15"}, {"id":10108,"category": "windDir","name": "静风","value": "17"}, {"id":10109,"category": "windDir","name": "静风","value": "18"} ],//数组2 var monitorList:[ { id: 10001382, name: "测试01", listsensor:[ {monitorid:10001382,sensorid:1,value: 11.1}, {monitorid:10001382,sensorid:2,value: 22.2}, {monitorid:10001382,sensorid:37,value: 180}, {monitorid:10001382,sensorid:38,value: 2} ]}, { id: 10001383, name: "测试02", listsensor:[ {monitorid:10001383,sensorid:3,value: 11.1}, {monitorid:10001383,sensorid:4,value: 22.2}, {monitorid:10001383,sensorid:37,value: 180}, {monitorid:10001383,sensorid:38,value: 2} ]} ]//需求结果/* newList:[ {id: 10001382,name: "测试01",listsensor:[ {monitorid:10001382,sensorid:1,value: 11.1,name:"温度",unit:"℃"}, {monitorid:10001382,sensorid:2,value: 22.2,name:"湿度",unit:"%"}, {monitorid:10001382,sensorid:37,value: 180,name:"风向",unit:"°"}, {monitorid:10001382,sensorid:38,value: 4,name:"风向",unit:"东"} ]}, {id: 10001383,name: "测试02",listsensor:[ {monitorid:10001383,sensorid:3,value: 11.1,name:"气压",unit:"kPA"}, {monitorid:10001383,sensorid:4,value: 22.2,name:"光照",unit:"kLux"}, {monitorid:10001383,sensorid:37,value: 180,name:"风向",unit:"°"}, {monitorid:10001383,sensorid:38,value: 2,name:"风向",unit:"东北"} ]}] */
我的方法:
先定义一维数组需要的数据:
var var newArr = [];let newListsensor = [];var arr1 = this.data.sensorList.filter(item=>{return item.category==="sensor"})var arr2 = this.data.sensorList.filter(item=>{return item.category==="sensorUnit"})for(let i=0;i<arr1.length;i++){ let obj = arr1[i],num=obj.value,flag=false; for(let j=0;j<arr2.length;j++){ let aj = arr2[j],n=aj.value,yearObj={}; if(n==num){ flag=true; yearObj["sensorid"]=num||n; yearObj["name"] = obj.name; yearObj["unit"] = aj.name; newArr.push(yearObj); } }} //得到新数组 /*newArr:[ {sensorid: "1", name: "温度", unit: "℃"}, {sensorid: "2", name: "湿度", unit: "%"}, {sensorid: "3", name: "气压", unit: "kPa"}, {sensorid: "4", name: "光照", unit: "kLux"}, {sensorid: "5", name: "风速", unit: "m/s"}, {sensorid: "6", name: "雨量", unit: "mm/h"}, {sensorid: "20", name: "PM2.5", unit: "ug/m3"}, {sensorid: "21", name: "PM10", unit: "ug/m3"}, {sensorid: "37", name: "风向", unit: "°"}, {sensorid: "38", name: "风向", unit: ""} ]for(let i=0;i<monitorList.length;i++){ newListsensor.push(monitorList[i].listsensor)}
/*newListsensor:[
]
push成一个二维数组之后怎么跟newArr,通过“sensorid”进行数据合并呢?