我想知道如何重新排序一个数组,以便每个对象都在它自己的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 举报,一经查实,本站将立刻删除。