首页 文章

Javascript按索引排序数组

提问于
浏览
-1

我有一个带有clients_id的数组 . 此数组按交货单排序 . 此交货订单可以更改:我有一个带有可排序列表的功能(基于Framework7) . 我需要在使用可排序列表功能更改传送列表时对其进行排序 .

1 - 当页面加载时,我将数组保存在隐藏的div中 . client1,client2,client3,client4 ...(按交货单排序)

<div id="initialsort" style="display:none"></div>

列表 :

<li>client1</li>
<li>client2</li>
<li>client3</li>
<li>client4</li>

2 - 我有一个功能,可以检测列表中的拖动客户端以更改位置

$$('li').on('sortable:sort',function(event){
alert("From " + event.detail.startIndex + " to " + event.detail.newIndex);
}

3 - 初始交付数组(动态):

client1 [0]
client2 [1]
client3 [2]
client4 [3]

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

client4 [0]
client1 [1]
client2 [2]
client3 [3]

每次用户更改列表位置时,我都需要获取并保存新数组 . 希望有人能帮忙!

3 回答

  • 1

    这对你有帮助,我希望.. @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)
    
  • 0

    根据要求,我创建了一个方法 . 希望它会有所帮助 .

    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));
    
  • 1

    根据我的理解,如果您知道拖放位置,基本上您必须交换项目 . "For example, if user put the client 3 in first delivery position the Array should become" 从这里我可以提出以下解决方案 . 只是使用位置交换数组元素 .

    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'] .

相关问题