Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果找到,从forEach更新条目_Javascript_Node.js - Fatal编程技术网

Javascript 如果找到,从forEach更新条目

Javascript 如果找到,从forEach更新条目,javascript,node.js,Javascript,Node.js,我目前正在这样做,它会在消息行和产品行之间找到匹配的Id,如果找到,则添加状态 var order = { "Products": [ {"id": 123, "Status": []}, {"id": 463, "Status": []}, ] } var message = { "lines": [ {"id": 535}, {"id": 463}, ] } const updateStatus = function(order, message,

我目前正在这样做,它会在消息行和产品行之间找到匹配的
Id
,如果找到,则添加状态

var order = {
  "Products": [
   {"id": 123, "Status": []},
   {"id": 463, "Status": []},
  ]
}

var message = {
  "lines": [
   {"id": 535},
   {"id": 463},
  ]
}

const updateStatus = function(order, message, name) {
    var products = order.Products;
    message.lines.forEach((messageLine) => {
        products.forEach((item) => {
          if (products.Id == messageLine.Id) {
              item.Status.push({"Name": name});
          }
        });
    });

    console.log(order)
}

updateStatus(order, message, "Done");
我不确定这是不是一个坏习惯,有没有更好的办法


示例:

我会选择以下内容: 我修改了推送行,因为推送返回被推送的索引。但我不知道这是否是你想要的

products.filter(
  product => message.lines.filter(
    messageLine => 
      product.id == messageLine.id
  ).length > 0
).forEach(
  item => item.Status.push({'Name': name})
)
我会检查是否存在具有相同id的条目。这将在第一次匹配时停止,并且forEach中没有forEach。另外,当您想要更新订单数组的内容(状态)时,我将使用它作为原则循环数组。如果
messages.lines
包含数百万行,而您只有一个产品,则可以节省一些时间

order.Products.forEach(产品=>{
if(message.lines.some({id}=>id==product.id)){
产品、状态、推送(“任意”);
}
});
console.log(order.Products)

变量顺序={
“产品”:[
{“id”:123,“状态”:[]},
{“id”:463,“状态”:[]},
]
}
var消息={
“行”:[
{“id”:535},
{“id”:463},
]
}

发布数据是个好主意,您认为如何?您的代码是否不起作用,或者您只是在寻找“最佳实践”?Ivan我已经用示例进行了更新。它有点不起作用,因为它两次添加状态,我也在寻找“最佳实践”。@baao发布的数据样本非常有效,谢谢。是什么导致我的示例在状态上添加了两次?