Javascript 如何对JS中的某些位置进行排序

Javascript 如何对JS中的某些位置进行排序,javascript,Javascript,我有一个数组,如下所示 const list = [ {key: 34}, {key: 17}, {key: 28}, {key: 35} ] 我根据键值来排序 list.sort((a,b)=>{ return a.key - b.key }) 我知道了 const list = [ {key: 17}, {key: 28}, {key: 34}, {key: 35} ] 但在执行某些函数后,除第一个位置外,其他值都会更改。例如: const list =

我有一个数组,如下所示

const list = [ {key: 34}, {key: 17}, {key: 28}, {key: 35} ] 
我根据键值来排序

list.sort((a,b)=>{
      return a.key - b.key
    })
我知道了

const list = [ {key: 17}, {key: 28}, {key: 34}, {key: 35} ] 
但在执行某些函数后,除第一个位置外,其他值都会更改。例如:

const list = [ {key: 17}, {key: 31}, {key:  2}, {key: 26} ] 
除第一个位置外,我想再次对其进行排序。
因此我想得到这个结果:

const list = [ {key: 17}, {key:  2}, {key: 26}, {key: 31} ]
除第一、第二位置外,重复此过程直到结束。

如何为这种情况生成排序代码?

您可以将数组分成两部分,一部分应进行排序,另一部分应保持与以前相同的顺序。然后将新排序的零件连接到“旧”未排序的零件上

const list=[{
关键字:17
},
{
关键字:31
},
{
关键词:2
},
{
关键字:26
}
];
常量sortFromIndex=(arr,index,compare)=>arr
.slice(0,索引)
康卡特先生(arr)
.slice(索引)
.排序(比较)
);
console.log(
sortFromIndex(列表,1,(a,b)=>a.key-b.key)

);我们可以选取排序操作中不考虑的元素,然后对数组进行排序并将元素插入指定的索引中:

const list=[{key:17},{key:31},{key:2},{key:26}]
函数sortWithConstantIndex(arr,索引=0){
arr=[…arr];
const val=arr.splice(索引,1.pop();
arr.sort({key:aKey},{key:bKey})=>+aKey-bKey);
阵列拼接(索引,0,val)
返回arr;
}
console.log(sortWithConstantIndex(list));
log(sortWithConstantIndex(list,2));
console.log(sortWithConstantIndex(list,1))我只是建议:

const list=[{key:17},{key:31},{key:2},{key:26}]
函数sortFromIndex(i0、arr、sortFct)
{
让preserv=[]
当(i0--)准备好推进(arr.shift())
arr.sort(sortFct).unshift(…preserv)
}
sortFromIndex(1,列表,(a,b)=>a.key-b.key)
console.log(列表)
。作为控制台包装{max height:100%!important;top:0;}
您必须尝试,因为
\u0。orderBy
很有用。排序arrayOfObject

您必须像这样使用.orderBy(chars、['name']、['asc'])//使用Lodash按“名称”对数组排序

在当前场景中,这里是,因此我们必须像这样使用
\uu.orderBy(chars,['key'],['asc'])


什么是“但是在一些函数之后,值被改变了”
list=list.slice(0,1)、concat(list.slice(1)、sort(…)
,然后是
list=list.slice(0,2)、concat(list.slice(2)、sort(…)
on@PoojaKBhatt它的意思是“在一些与问题无关的操作之后,一些值被更改”由于您正在列表上执行一些操作,如slice、concat等,这些操作会更改列表中的元素,因此您必须再次执行排序。请不要发布代码的图片,而是发布实际代码。