Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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_Jquery_Arrays_Jquery Ui - Fatal编程技术网

Javascript按索引排序数组

Javascript按索引排序数组,javascript,jquery,arrays,jquery-ui,Javascript,Jquery,Arrays,Jquery Ui,我有一个客户id为的数组。这个数组是按交货顺序排序的。 此交货单可以更改:我有一个带有可排序列表的函数(基于Framework7)。 我需要在使用可排序列表功能更改交货列表时对其进行排序 1-加载页面时,我将数组保存在隐藏的div中。 客户1,客户2,客户3,客户4。。。(按交货单排序) 3-初始交付阵列(动态): 例如,如果用户将客户端3置于第一个交付位置,则阵列应为: client4 [0] client1 [1] client2 [2] client3 [3] 每次用户更改列表位置时,我

我有一个客户id为的数组。这个数组是按交货顺序排序的。 此交货单可以更改:我有一个带有可排序列表的函数(基于Framework7)。 我需要在使用可排序列表功能更改交货列表时对其进行排序

1-加载页面时,我将数组保存在隐藏的div中。 客户1,客户2,客户3,客户4。。。(按交货单排序)

3-初始交付阵列(动态):

例如,如果用户将客户端3置于第一个交付位置,则阵列应为:

client4 [0]
client1 [1]
client2 [2]
client3 [3]
每次用户更改列表位置时,我都需要获取并保存新数组。
希望有人能帮忙

根据要求,我创建了一个方法。希望这会有帮助

var clientNewPosIndex = 0;
var clientOldList = ["client1","client2","client3","client4"];
var clientName = "client4";
function clientNewPos(clientNewPosIndex,clientName,clientOldList){
      var clientNewList = clientOldList;
      var clientOldPosIndex= clientNewList.indexOf(clientName);
      if(clientOldPosIndex > -1){
            clientNewList.splice(clientOldPosIndex,1);
            clientNewList.splice( clientNewPosIndex, 0, clientName);
      }else{
            clientNewList.splice( clientNewPosIndex, 0, clientName);
      }
      return(clientNewList);
};
console.log(clientNewPos(clientNewPosIndex,clientName,clientOldList));

根据我的理解,如果你知道拖放位置,基本上你必须交换物品“例如,如果用户将客户端3置于第一个交付位置,则阵列应变为”,由此我可以提出以下解决方案。只是使用position交换数组元素

var arr = ["c1", "c2", "c3", "c4"]
var oldPos = 3
var newPos = 0
var tmp = arr[newPos]
arr[newPos] = arr[oldPos]
arr[oldPos] = tmp 
console.log("arr : ", arr)

输出:['c4','c2','c3','c1']。

我希望这将对您有所帮助@varatharajan您还需要对代码执行更多操作。我想你差不多走近了。。但是你对这个问题理解错了我想是的

var arr = ["c1", "c2", "c3", "c4"];
var arrLength = arr.length();
var i = 0;
while(i < arrLength-1){
var temp = arr[i];
arr[i] = arr[arrLength-1];
arr[arrLength-1] = temp;
i++;
}
console.log("arr : ", arr)
var arr=[“c1”、“c2”、“c3”、“c4”];
var arrLength=arr.length();
var i=0;
而(i
我添加了jQuery和jQuery ui,因为我假设jQuery是$and
sortable:sort
是来自jQuery uiThanks Gaurav Rana的事件,您的代码只有在拖动到第一个位置时才起作用。如果您将“client4”拖到第二个位置,它将像您将client4拖到第一个位置一样放置在数组中。知道吗?您可以更改var clientNewPosIndex=1的值;改变客户的立场。很好。谢谢Gaurav Rana
client4 [0]
client1 [1]
client2 [2]
client3 [3]
var clientNewPosIndex = 0;
var clientOldList = ["client1","client2","client3","client4"];
var clientName = "client4";
function clientNewPos(clientNewPosIndex,clientName,clientOldList){
      var clientNewList = clientOldList;
      var clientOldPosIndex= clientNewList.indexOf(clientName);
      if(clientOldPosIndex > -1){
            clientNewList.splice(clientOldPosIndex,1);
            clientNewList.splice( clientNewPosIndex, 0, clientName);
      }else{
            clientNewList.splice( clientNewPosIndex, 0, clientName);
      }
      return(clientNewList);
};
console.log(clientNewPos(clientNewPosIndex,clientName,clientOldList));
var arr = ["c1", "c2", "c3", "c4"]
var oldPos = 3
var newPos = 0
var tmp = arr[newPos]
arr[newPos] = arr[oldPos]
arr[oldPos] = tmp 
console.log("arr : ", arr)
var arr = ["c1", "c2", "c3", "c4"];
var arrLength = arr.length();
var i = 0;
while(i < arrLength-1){
var temp = arr[i];
arr[i] = arr[arrLength-1];
arr[arrLength-1] = temp;
i++;
}
console.log("arr : ", arr)