Node-RED中JavaScript函数无法获取数组长度,求助解决
问题分析与解决
你的代码存在两个核心问题,导致无法得到预期结果:
错误包装数组为对象
你创建的array1是一个包含payload属性的对象,而非数组。对象本身没有length属性,因此j = array1.length会得到undefined,而非目标数组的长度。不符合Node-RED函数节点返回规则
Node-RED的函数节点必须返回标准消息对象(通常是带payload属性的对象),直接返回数字j无法被节点正确处理和输出。
修正后的代码
假设msg.payload本身就是你需要处理的数组,直接修改代码如下:
// 直接获取目标数组的长度 let j = msg.payload.length; // 返回符合要求的消息对象,将长度存入payload return { payload: j };
额外验证建议
- 可先添加调试节点直接输出
msg.payload,确认它确实是包含50个元素的数组 - 如果
msg.payload不是直接的数组,而是嵌套在对象内的数组,需要调整路径获取数组,比如msg.payload.list.length(根据实际数据结构修改)
内容的提问来源于stack exchange,提问作者Hazarath Voleti
相关产品推荐
相关产品推荐

