拉取数组对象值然后推送到另一个数组

Posted

技术标签:

【中文标题】拉取数组对象值然后推送到另一个数组【英文标题】:Pull array object values then push to another array 【发布时间】:2021-09-21 11:36:39 【问题描述】:

嗨!我正在尝试遍历一个对象以执行一个函数,该函数将读取每个分组数组中的每个值,但我继续只有第一组。

我试图迭代并将它添加到一个数组中,但我无法获得预期的结果。

这是预期的结果,但只返回第一个分组数组。

console.log ->

  "order_details": [
    
      "order_seq": "2104150001"
    ,
    
      "order_seq": "2105110005"
    ,
    
      "order_seq": "2106220007"
    ,
    
      "order_seq": "2105260007"
    
  ]


console.log ->

  "order_details": [
    
      "order_seq": "2105270001"
    
  ]


console.log ->

  "order_details": [
    
      "order_seq": "2104090006"
    ,
    
      "order_seq": "2105060001"
    
  ]

这是我的脚本 sn-p:

var objectPayload = 
  "0": [
    "order_seq": "2104150001"
  , 
    "order_seq": "2105110005"
  , 
    "order_seq": "2106220007"
  , 
    "order_seq": "2105260007"
  ],
  "1": [
    "order_seq": "2105270001"
  ],
  "2": [
    "order_seq": "2104090006"
  , 
    "order_seq": "2105060001"
  ]
;

var result = Object.keys(objectPayload).map((key) => objectPayload[key]);

for (let i = 0; i < result.length; i++) 
  var testList = 
    "order_details": []
  ;
  setTimeout(function() 
    let jsonSeqNo;
    result[i].map(function(value) 
      jsonSeqNo = 
        'order_seq': value.order_seq
      ;
    );
    testList.order_details.push(jsonSeqNo);
    console.log(testList);
  , i * 500);

【问题讨论】:

您的代码 sn-p 没有运行,并且您的代码不在 sn-p 中 嗨,欢迎来到 SO。请花时间阅读tour .map(在 setTimeout 内)不返回值将返回 value - 你可能想要 ...map(function(value) return result[i].map(function (value) 'order_seq': value.order_seq ) 【参考方案1】:

解决方法很简单:

var objectPayload = 
  "0": [
    "order_seq": "2104150001"
  , 
    "order_seq": "2105110005"
  , 
    "order_seq": "2106220007"
  , 
    "order_seq": "2105260007"
  ],
  "1": [
    "order_seq": "2105270001"
  ],
  "2": [
    "order_seq": "2104090006"
  , 
    "order_seq": "2105060001"
  ]
;

const result = Object.values(objectPayload).map((group) => (
  order_details: group
));

result.forEach(entry => console.log(entry));

使用Object.values,您将获得一组组。然后使用Array.prototype.flat 可以展平数组。

【讨论】:

嗨!感谢您的时间。我编辑了我的原始帖子以显示我试图实现的预期结果..谢谢! :) 不幸的是,您想要实现的目标并不完全清楚。您只想控制台日志吗?或者你想创建一个 order_details: [] 的数组? 更新了代码,可能是你想要实现的。如果不是,请提供更准确的解释。

以上是关于拉取数组对象值然后推送到另一个数组的主要内容,如果未能解决你的问题,请参考以下文章

反应表单,提交对象,然后将其推送到数组

将值推送到辅助数组javascript

比较 2 个对象的值并将值推送到一个对象数组

如何承诺等待所有对象完成然后推送到数组?

如何在对象数组中获取 1 到 n 键值并将它们推送到新数组?(Javascript)[重复]

循环遍历两个对象数组以将匹配值推送到新数组在 React 中不起作用,但在 JS Fiddle 中起作用