循环未正确更改元素位置



我想自动化一个测试用例,其中我需要根据项目的数值按降序对其进行排序。对于排序,用户故事列表项可能会更改。在开始时,他们从一开始就看这个值。我使用了这个的哈希

var values = $$('div.vertical-list-container div.list-group-item');
var numberHash = { 'One': 1, 'Two': 2, 'Three': 3, 'Four': 4, 'Five': 5, 'Six': 6, 'Seven': 7, 'Eight': 8, 'Nine': 9, 'Ten': 10 };

在我创建了收集所有这些元素的循环之后。

for(var i=0;i<values.length;i++)
{
numberArray.push(numberHash[values[i].getText()])
}

现在循环看起来是[1,2,3,4,5,6]之后,我使用冒泡排序来制作降序

function bubble_Sort(a)
{
var swapp;
var n = a.length-1;
var x=a;
do {
swapp = false;
for (var i=0; i < n; i++)
{
if (x[i] < x[i+1])
{
var temp = x[i];
x[i] = x[i+1];
x[i+1] = temp;
swapp = true;
}
}
n--;
} while (swapp);
return x; 
}
bubble_Sort(numberArray);

在最后一个循环中,我遇到了一个问题。

for(var i = 0; i < values.length; i++){
var elem = values[i];
var elemNumber = numberHash[values[i].getText()];
var index = numberArray.findIndex((element) => element == elemNumber);
var target = values[index];
elem.dragAndDrop(target);
}

除2以外,所有值都更改了位置。我知道为什么(因为在.dragAndDrop函数值1低于6之后,现在值2处于零位置,但循环开始检查下一个位置。所以现在我已经按这个顺序对值进行了排序=>这[6,2,5,4,3,1]而不是[6,5,4,3,2.1]。有人知道怎么修吗?循环中的问题在哪里?我真的需要这个:(

自行解决

var moved = true

while(moved){
values = $$('div.vertical-list-container div.list-group-item');
moved = false
for(var i = 0; i < values.length; i++){
var elem = values[i];
var elemNumber = numberHash[values[i].getText()];
var index = numberArray.findIndex((element) => element == elemNumber);
if(i === index){continue}
var target = values[index];
elem.dragAndDrop(target);
moved = true;                   
}

现在循环正在正确更改值