微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 根据每个对象的id重新排序数组

我想知道如何重新排序一个数组,以便每个对象都在它自己的id – 1的索引处.

//Lets say we have an array like so
var unorderedArray=[{Id:2,Name:"Bob"},{Id:1,Name:"Julian"},{Id:3,Name:"Jeff"}]

我能写什么样的功能才能得到:

var orderedArray=[{Id:1,{Id:2,Name:"Jeff"}]

到目前为止,我已经尝试了这个,但它不起作用:

for(let i = 0;i<unorderedArray.length;i++){
    correctlyOrderedArray[unorderedArray[i].Id]=unorderedArray[i];
}

P.S!不能保证最低Id为1并且最低和最高Id之间没有间隙,例如2,10,5,3等.

解决方法

您可以使用 Array#reduce创建一个数组,其中的项目根据其ID放置.但是,如果id不连续,你将获得一个稀疏数组(一个带有孔的数组 – undefineds).

var unorderedArray=[{Id:2,Name:"Jeff"},{Id:10,Name:"Tom"}];

var orderedArray = unorderedArray.reduce(function(arr,item) {
  arr[item.Id - 1] = item;

  return arr;
},[]);

console.log(orderedArray); // since the Tom's id is 10,you'll get 6 undefined items between Tom and Jeff

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐