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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...