MSG对象的抽象变量 - 看起来可以循环穿过对象



在我的节点 - 红色函数中,我一直在努力处理sg.payload。

这是代码

var js = msg.payload;
var output = {};
 //var Ids = js.events.sum;//.value;
 //var labels = js.externalIds.Id;
 js.forEach(function(sum){
    output.push(js.events.sum);
})
msg.payload = output;
console.log(msg.payload);
return msg; 

我已经尝试过存储一个" json.parse((" - msg和msg.payload的变量,但是每次我收到'意外O'错误。

我一直在看

foreach不是JavaScript数组的功能错误

foreach不是函数错误

SyntaxError:位置1

的JSON中的意外令牌O

但是这些尚未澄清如何处理味精对象。

以下内容也有助于其他原因,但不能弄清为什么我的JS变量不能``foreach'':

https://nodered.org/docs/user-guide/messages

https://nodered.org/docs/user-guide/writing-functions

确切的错误是TypeError: js.forEach is not a function

澄清赞赏。

编辑

我正在尝试从API调用中选择数据,该数据返回相同类型数据的多个实例的JSON(不同的值(。从相同类型的实例中,我试图选择一种类型的返回值。

例如,

假设返回的json是这样的结构:

{
   "tupperware": [
       {
            "spoon": "salad spoon",
            "fork": "soup fork"
       },
       {
            "spoon": "soup spoon",
            "fork": "cake fork" 
       }
      ],
}

,我正在尝试仅选择叉子值。我该怎么做?

{}.forEach不是一个函数,因为它不是。我认为您想要for in循环。

其他问题:

  1. 您的output变量是一个空对象,但是您正在尝试使用push。那行不通。那应该是一个数组。
  2. 在您当前的forEach循环中(不起作用(,您正在尝试按js.events.sum。我认为您只需要推sum,但目前尚不清楚您实际上是什么。

这是for in循环的示例。

const myObj = {test: 1};
for(const el in myObj) {
    console.log(myObj[el]);
}

您的代码:

var js = msg.payload;
var output = []; // This should be an array if you intend `push`ing to it.
 for(const el in js) {
    output.push(js[el]); // Not exactly sure what you're trying to push here
 }
msg.payload = output;
console.log(msg.payload);
return msg; 

https://developer.mozilla.org/en-us/docs/web/javascript/reference/reference/statement/statements/for...in

最新更新