我有一个对象数组,每个对象都有一个'id'和'name'。我正从服务器检索'id',需要从此id开始重新排序数组。
示例代码:
var myList = [
{
id: 0,
name: 'Joe'
},
{
id: 1,
name: 'Sally'
},
{
id: 2,
name: 'Chris'
},
{
id: 3,
name: 'Tiffany'
},
{
id: 4,
name: 'Kerry'
}
];
如果'id'为2,我如何重新排序数组,以便我的输出如下:
var newList = [
{
id: 2,
name: 'Chris'
},
{
id: 3,
name: 'Tiffany'
},
{
id: 4,
name: 'Kerry'
},
{
id: 0,
name: 'Joe'
},
{
id: 1,
name: 'Sally'
}
];
答案 0 :(得分:1)
您可以在给定索引处切片数组,并使用 spread语法返回一个新数组。
404
答案 1 :(得分:1)
试试这个:
function orderList(list, id){
return list.slice(id).concat(list.slice(0,id));
}

链接到demo
答案 2 :(得分:0)
myList.sort(function(a,b){
return a.id>2===b.id>2?a.id-b.id:b.id-a.id;
});
newList=myList;
答案 3 :(得分:0)
你可以拼接想要的部分并使用拼接将它插入数组的末尾。
var myList = [{ id: 0, name: 'Joe' }, { id: 1, name: 'Sally' }, { id: 2, name: 'Chris' }, { id: 3, name: 'Tiffany' }, { id: 4, name: 'Kerry' }],
id = 2;
myList.splice(myList.length, 0, myList.splice(0, myList.findIndex(o => o.id === id)));
console.log(myList);

答案 4 :(得分:0)
使用 es6 传播语法
var myList = [{ id: 0, name: 'Joe' }, { id: 1, name: 'Sally' }, { id: 2, name: 'Chris' }, { id: 3, name: 'Tiffany' }, { id: 4, name: 'Kerry' }],
id = 2;
var index = myList.findIndex(o => o.id == id);
var arr = myList.splice(0, index);
var result = [...myList, ...arr];
console.log(result);