【问题标题】: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 })

标签: javascript jquery arrays json sorting


【解决方案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: [] }的数组?
  • 更新了代码,可能是你想要实现的。如果不是,请提供更准确的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 2014-02-04
  • 2022-01-08
  • 2017-03-02
  • 2019-12-22
  • 1970-01-01
相关资源
最近更新 更多