如何将数组映射到另一个对象数组

时间:2020-10-13 04:05:41

标签: javascript json sorting

杰森1

{
  "ordering_data": [
    {
      "order": 0,
      "section_menu_id": 3
    },
    {
      "order": 1,
      "section_menu_id": 1
    },
    {
      "order": 2,
      "section_menu_id": 6
    },
  ]
}

杰森2

[
  3,
  7,
  4,
]

预期结果


{
  "ordering_data": [
    {
      "order": 3,
      "section_menu_id": 3
    },
    {
      "order": 7,
      "section_menu_id": 1
    },
    {
      "order": 4,
      "section_menu_id": 6
    },
  ]
}

我有2个json文件。有人可以告诉我如何将数据结构更改为预期结果。我尝试过使用map,但对我来说有点困惑。需要帮助。谢谢。

3 个答案:

答案 0 :(得分:1)

您可以使用Array.prototype.map完成此操作。

Array.map上,通过引用,第二个参数表示数组的当前索引,因此可以基于该值,通过{{1}将second array value分配给order键}。

index

答案 1 :(得分:0)

我认为您正在寻找类似以下代码段的内容。

这假设两个对象的长度相等,并且我们正在修改原始对象。

首先,循环数组,并将原始对象中的顺序替换为数组中的数字。

练习创建一个新对象,而不是修改原始的obj1

var obj1 = {
  "ordering_data": [
    {
      "order": 0,
      "section_menu_id": 3
    },
    {
      "order": 1,
      "section_menu_id": 1
    },
    {
      "order": 2,
      "section_menu_id": 6
    },
  ]
};

var myArray = [
  3,
  7,
  4,
];

for(var i = 0; i<myArray.length; i++){
  obj1.ordering_data[i].order = myArray[i];
}
console.log(obj1);

答案 2 :(得分:0)

这可能有帮助。

    j1 = {
  "ordering_data": [
    {
      "order": 0,
      "section_menu_id": 3
    },
    {
      "order": 1,
      "section_menu_id": 1
    },
    {
      "order": 2,
      "section_menu_id": 6
    },
  ]
};

j2 = [
  3,
  7,
  4,
]

for(i=0; i<j1.ordering_data.length; i++ ){
  j1.ordering_data[i].order = j2[i]
}