我想知道如何重新排列数组,以使每个对象都位于其自身的索引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,Name:"Julian"},{Id:2,Name:"Bob"},{Id:3,Name:"Jeff"}]
到目前为止,我已经尝试过了,但是没有用:
for(let i = 0;i<unOrderedArray.length;i++){
correctlyOrderedArray[unOrderedArray[i].Id]=unOrderedArray[i];
}
PS!无法保证最低Id为1,并且最低Id与最高Id之间没有间隙,例如2,10,5,3等。
您可以使用Array#reduce创建一个数组,其中包含根据其ID放置的项目。但是,如果ID不连续,则将获得稀疏数组(带有孔的数组- undefineds
)。
var unOrderedArray=[{Id:2,Name:"Bob"}, {Id:1,Name:"Julian"}, {Id:3,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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句