如何更改数组中对象的顺序

时间:2018-11-08 15:44:23

标签: javascript arrays sorting

因此,我有一个statuses表。在此状态表上,我有一个foreign_key代表状态所属的工作流程。 enter image description here

现在我的问题是,在状态列表中循环将其按ID顺序排列,但是说我插入一个新状态,并希望它位于列表中的特定位置而不仅仅是添加到底部< / strong>我该怎么做?

我是否需要添加一个额外的字段以用于操纵打印状态的顺序?

这个问题不同于它可能是一个副本的问题,因为,我只是问如果没有ID或索引以外的唯一标识符,该如何对对象数组进行排序。我不是在寻找字母或反向字母。

说我有来自数据库的一系列状态,像这样

[
  {id: 1, status: 'receive'},
  {id: 2, status: 'scan'},
  {id: 3, status: 'prepare'},
  {id: 4, status: 'review'},
  {id: 5, status: 'complete'},
]

然后我想插入一个新对象,但是我希望它在列表中排在第4位,但是当我创建新状态时,它只会使用下一个可用的ID ...因此数组会这样

[
  {id: 1, status: 'receive'},
  {id: 2, status: 'scan'},
  {id: 3, status: 'prepare'},
  {id: 4, status: 'review'},
  {id: 5, status: 'complete'},
  {id: 6, status: 'file'},// this being the new status created
]

因此,现在当我返回所有状态的数组时,如何将状态以第4位放在具有给定属性的列表中

[
  {id: 1, status: 'receive'},
  {id: 2, status: 'scan'},
  {id: 3, status: 'prepare'},
  {id: 6, status: 'file'},// this being the new order of statuses
  {id: 4, status: 'review'},
  {id: 5, status: 'complete'},
]

2 个答案:

答案 0 :(得分:1)

使用本机splice函数。通过传递0作为第二个参数,您指定您不想在该位置之前删除,也就是说,只需插入即可。

var data = [];
data[0] = "One";
data[1] = "Two";
data[2] = "Three";
data[3] = "Four";
data.splice(2, 0, "Custom");
console.log(data.join());

答案 1 :(得分:0)

查看Array.sort()进行排序,并查看Array.splice插入给定位置。