因此,我有一个statuses
表。在此状态表上,我有一个foreign_key
代表状态所属的工作流程。
现在我的问题是,在状态列表中循环将其按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'},
]
答案 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
插入给定位置。