Javascript Упорядочить массив по индексу - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть массив с 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 в первую позицию доставки, массив должен стать:

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

Мне нужно получать и сохранять новый массив каждый раз, когда пользователь меняет положение списка.Надеюсь, что кто-то может помочь!

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

Насколько я понимаю, в основном вы должны поменять местами предметы, если вы знаете положение перетаскивания. "Например, если пользователь поставил клиента 3 на первую позицию доставки, массив должен стать" , из этого я могу предложить следующее решение.просто обмен элементами массива с использованием позиции.

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

0 голосов
/ 10 декабря 2018

Это поможет вам, я надеюсь .. @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 голосов
/ 10 декабря 2018

По требованию я создал метод.надеюсь, это будет полезно.

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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...