用另一个替换json数组,但保持顺序

时间:2020-09-12 14:15:42

标签: javascript arrays json

我有一个像json这样响应的API:

{'items':[
{'id': 1, 'quantity': 3},
{'id': 4, 'quantity': 7},
{'id': 5, 'quantity': 1}
]}

我已经在页面上做到了,它每15秒获取一次此API,但是存在一个问题,每次它在数组中具有不同的顺序(如果在id = 1的示例项中放在首位,则可能是最后一次)。因此,页面上的块也更改了它们的顺序。我试图像这样对付它:

   for (var i in response.items) {
                   let current_item = response.items[i];
                   for (var i2 in original_items.items) {
                       if (original_items.items[i2].id === current_item.id) {
                           original_items.items[i2] = current_item;
                       }
                   }
               }

但是这种方式行不通。按ID对它们进行排序也不是可行的选择

1 个答案:

答案 0 :(得分:2)

按ID排序应该是可行的。每当响应返回时(包括对初始请求的响应),请对对象数组进行排序:

response.items.sort((a, b) => a.id - b.id);