『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 574|回复: 3

[教程系列] 请教群里高手关于函数返回值循环的问题

[复制链接]

34

主题

138

帖子

1119

积分

金牌会员

Rank: 6Rank: 6

积分
1119
金钱
981
HASS币
0
发表于 2024-6-20 18:27:20 | 显示全部楼层 |阅读模式
本帖最后由 lambilly 于 2024-6-20 18:37 编辑

问题是这样的:我抓包APP获取到一组77个数组的数据,如何才能用一个函数的循环for把这77个数组的数据输送到77个sensor节点。我现在的方法如下:
我设置了一个数组分配这77个数据中的不同项目(有需要的,由于77个太多了,我暂只取12组)用了函数的12个输出各自返回一组数据。同时设置一下is_LastMonth参数来通过下面的switch节点取出上个月的数据组,把通过“获取上月”节点的数据通过第二个switch节点(费用分类)把数据组分类到不同的Sensor;
1718878896532.jpg

1、这是函数节点即图中的“数据分配”,这部分如何用for优化,不然我得写77个msg
var billDate = new Array();
var chargeItemName = new Array();
var billYear = new Array();
var billMonth = new Array();
var is_LastMonth = new Array();
var billAmount = new Array();
var shouldChargeDate = new Array();

var now = new Date();
var year = now.getFullYear();
var month1 = now.getMonth()+1;
var month = 0;
  if (month1 >= 1 && month1 <= 9) {
    month ="0" + month1;
  };
year= year.toString();
month = month.toString();

for (var i=0;i<=11;i++){
  billDate[i] = msg.payload.data[i].billDate;
  chargeItemName[i] = msg.payload.data[i].chargeItemName;
  if (chargeItemName[i] === "自用水费") {
    billYear[i] = billDate[i].substring(0,4);
    billMonth[i] = billDate[i].substring(13,15);
  }
  else {
    billYear[i] = billDate[i].substring(0,4);
    billMonth[i] = billDate[i].substring(4,6);
  };
  is_LastMonth[i] = month - billMonth[i];
  billAmount[i] = msg.payload.data[i].billAmount;
  shouldChargeDate[i] = msg.payload.data[i].shouldChargeDate;
}

var msg1 = {
  cost: {
    billYear: billYear[0],
    billMonth: billMonth[0],
    chargeItemName: chargeItemName[0],
    billDate: billDate[0],
    billAmount: billAmount[0],
    shouldChargeDate: shouldChargeDate[0],
    is_LastMonth: is_LastMonth[0],
    }
  };

var msg2 = {
  cost: {
    billYear: billYear[1],
    billMonth: billMonth[1],
    chargeItemName: chargeItemName[1],
    billDate: billDate[1],
    billAmount: billAmount[1],
    shouldChargeDate: shouldChargeDate[1],
    is_LastMonth: is_LastMonth[1],
  }
};
var msg3 = {
  cost: {
    billYear: billYear[2],
    billMonth: billMonth[2],
    chargeItemName: chargeItemName[2],
    billDate: billDate[2],
    billAmount: billAmount[2],
    shouldChargeDate: shouldChargeDate[2],
    is_LastMonth: is_LastMonth[2],
  }
};
var msg4 = {
  cost: {
    billYear: billYear[3],
    billMonth: billMonth[3],
    chargeItemName: chargeItemName[3],
    billDate: billDate[3],
    billAmount: billAmount[3],
    shouldChargeDate: shouldChargeDate[3],
    is_LastMonth: is_LastMonth[3],
  }
};
var msg5 = {
  cost: {
    billYear: billYear[4],
    billMonth: billMonth[4],
    chargeItemName: chargeItemName[4],
    billDate: billDate[4],
    billAmount: billAmount[4],
    shouldChargeDate: shouldChargeDate[4],
    is_LastMonth: is_LastMonth[4],
  }
};
var msg6 = {
  cost: {
    billYear: billYear[5],
    billMonth: billMonth[5],
    chargeItemName: chargeItemName[5],
    billDate: billDate[5],
    billAmount: billAmount[5],
    shouldChargeDate: shouldChargeDate[5],
    is_LastMonth: is_LastMonth[5],
  }
};
var msg7 = {
  cost: {
    billYear: billYear[6],
    billMonth: billMonth[6],
    chargeItemName: chargeItemName[6],
    billDate: billDate[6],
    billAmount: billAmount[6],
    shouldChargeDate: shouldChargeDate[6],
    is_LastMonth: is_LastMonth[6],
  }
};
var msg8 = {
  cost: {
    billYear: billYear[7],
    billMonth: billMonth[7],
    chargeItemName: chargeItemName[7],
    billDate: billDate[7],
    billAmount: billAmount[7],
    shouldChargeDate: shouldChargeDate[7],
    is_LastMonth: is_LastMonth[7],
  }
};
var msg9 = {
  cost: {
    billYear: billYear[8],
    billMonth: billMonth[8],
    chargeItemName: chargeItemName[8],
    billDate: billDate[8],
    billAmount: billAmount[8],
    shouldChargeDate: shouldChargeDate[8],
    is_LastMonth: is_LastMonth[8],
  }
};
var msg10 = {
  cost: {
    billYear: billYear[9],
    billMonth: billMonth[9],
    chargeItemName: chargeItemName[9],
    billDate: billDate[9],
    billAmount: billAmount[9],
    shouldChargeDate: shouldChargeDate[9],
    is_LastMonth: is_LastMonth[9],
  }
};
var msg11 = {
  cost: {
    billYear: billYear[10],
    billMonth: billMonth[10],
    chargeItemName: chargeItemName[10],
    billDate: billDate[10],
    billAmount: billAmount[10],
    shouldChargeDate: shouldChargeDate[10],
    is_LastMonth: is_LastMonth[10],
  }
};
var msg12 = {
  cost: {
    billYear: billYear[11],
    billMonth: billMonth[11],
    chargeItemName: chargeItemName[11],
    billDate: billDate[11],
    billAmount: billAmount[11],
    shouldChargeDate: shouldChargeDate[11],
    is_LastMonth: is_LastMonth[11],
  }
};
return [msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9,msg10,msg11,msg12];
2、以下是“获取上月”switch节点
1718879079843.jpg

3、以下是“费用分类”switch节点
1718879104386.jpg
4、其中一个Sensor的内容
1718879770514(1).jpg


回复

使用道具 举报

1

主题

49

帖子

344

积分

中级会员

Rank: 3Rank: 3

积分
344
金钱
295
HASS币
0
发表于 2024-6-21 11:03:26 | 显示全部楼层
上边都会用for循环了,下边为啥不继续用呢
var msgs = [];
for (var j = 0; j <= 11; j++) {
  msgs.push({
    cost: {
      billYear: billYear[j],
      billMonth: billMonth[j],
      chargeItemName: chargeItemName[j],
      billDate: billDate[j],
      billAmount: billAmount[j],
      shouldChargeDate: shouldChargeDate[j],
      isLastMonth: isLastMonth[j]
    }
  });
}
回复

使用道具 举报

34

主题

138

帖子

1119

积分

金牌会员

Rank: 6Rank: 6

积分
1119
金钱
981
HASS币
0
 楼主| 发表于 2024-6-21 15:01:37 | 显示全部楼层
本帖最后由 lambilly 于 2024-6-21 15:58 编辑
李凯 发表于 2024-6-21 11:03
上边都会用for循环了,下边为啥不继续用呢

谢谢!搞定了
回复

使用道具 举报

20

主题

211

帖子

1535

积分

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1324
HASS币
10
发表于 2024-9-20 10:44:48 | 显示全部楼层
举例:   
$arr = ["a":"a1","b":"b1","c":"c77"];  //还有无数个.
foreach($arr as $key=>$val){
     echo $key.'====='.$val;   这里就会得到相应的键和值
     //当然你也是可以写其他的逻辑
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 16:18 , Processed in 0.198405 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表