Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组排序和值同时更改_Javascript_Arrays_Algorithm_Sorting_Indexing - Fatal编程技术网

Javascript 数组排序和值同时更改

Javascript 数组排序和值同时更改,javascript,arrays,algorithm,sorting,indexing,Javascript,Arrays,Algorithm,Sorting,Indexing,我在下面有一个数组,每个数组中的第一个数字表示顺序。 我想做的是,每当我更改顺序时,它都会引用数组并将其重新索引为2、3、4、5 const payments = [ [2, paymentName1, '5%'], [3, paymentName2, '5%'], [4, paymentName3, '5%'], [5, paymentName4, '5%'] ]; 例如,如果我将第一个数组的顺序从2更改为6,则数组将变为下面的数组 const payme

我在下面有一个数组,每个数组中的第一个数字表示顺序。 我想做的是,每当我更改顺序时,它都会引用数组并将其重新索引为2、3、4、5

const payments = [
    [2, paymentName1, '5%'],
    [3, paymentName2, '5%'],
    [4, paymentName3, '5%'],
    [5, paymentName4, '5%']
  ];
例如,如果我将第一个数组的顺序从2更改为6,则数组将变为下面的数组

const payments = [
    [2, paymentName2, '5%'],
    [3, paymentName3, '5%'],
    [4, paymentName4, '5%'],
    [5, paymentName1, '5%'],
  ];
我目前所做的是对它进行排序,并让for循环重新排序。如果可能的话,我想在一个循环中完成。请帮我写这个算法

提前谢谢

编辑:

这是我目前的职能。还有更好的办法吗?
谢谢

排序后,只需在数组上循环并递增地分配新的顺序值。这里没有更好的

const付款=[
[2,“paymentName1”,“5%”,
[3,“paymentName2”,“5%”,
[4,“paymentName3”,“5%”,
[5,“paymentName4”,“5%”
];
函数setOrder(索引,newOrder){
付款[指数][0]=新订单;
付款.排序(([a],[b])=>a-b);
对于(i=0;i控制台日志(付款)排序后,只需在数组上循环并递增地分配新的顺序值。这里没有更好的

const付款=[
[2,“paymentName1”,“5%”,
[3,“paymentName2”,“5%”,
[4,“paymentName3”,“5%”,
[5,“paymentName4”,“5%”
];
函数setOrder(索引,newOrder){
付款[指数][0]=新订单;
付款.排序(([a],[b])=>a-b);
对于(i=0;i控制台日志(付款)显示您的努力和您的困境。因此,这不是一项只获取代码的服务written@risingStark我添加了我当前的工作为什么订单应该以2开头?我会理解1或0,但2?@trincot订单为0和1的代码不在支付数组中。您得到的代码可以满足您的要求,但您可以删除
parseInt
调用,只需说
index+2
。然而,这听起来很像一个XY问题。
payments
中的项目最有可能是对象,而不是数组,如果您稍微重新考虑一下设计模式,则最有可能不需要对索引进行排序或更改。展示您的努力和您的困境。因此,这不是一项只获取代码的服务written@risingStark我添加了我当前的工作为什么订单应该以2开头?我会理解1或0,但2?@trincot订单为0和1的代码不在支付数组中。您得到的代码可以满足您的要求,但您可以删除
parseInt
调用,只需说
index+2
。然而,这听起来很像一个XY问题。
payments
中的项目很可能应该是对象,而不是数组,如果您稍微重新考虑一下设计模式,则很可能不需要对索引进行排序或更改。
payments.sort((a, b) => a[0] - b[0]);

for (const index in payments) {
  payments[index][0] = parseInt(index) + 2;
}