我想在javascript中使用一些算法来执行以下操作:
例如: 我有以下数组:
条目:[1,2,3,4,5,6,7]
我希望所选项目(2,3,6)在数组中各自下降一个位置。
预期产出:[2,3,1,4,6,5,7]
如何为所选项目的组处理执行此算法。
我尝试使用javascript算法将每个项目更新到索引-1位置,但它不适用于组处理。
Array.prototype.move = function (old_index, new_index) {
if (new_index >= this.length) {
var k = new_index - this.length;
while ((k--) + 1) {
this.push(undefined);
}
}
this.splice(new_index, 0, this.splice(old_index, 1)[0]);
return this; // for testing purposes
};
答案 0 :(得分:0)
我会这样做,
function ascend(values, by, source) {
move.map(function(value) {
old_index = source.indexOf(value);
source.splice(old_index - by, 0, source.splice(old_index, 1)[0]);
});
return source;
}
source = [1,2,3,4,5,6,7];
move = [2,3,6];
result = ascend(move, 1, source);
console.log(result);

答案 1 :(得分:0)
var arr=[2, 3, 1, 4, 5, 6, 7]
Array.prototype.descendElementIndex=function(element){
var _this=this;
if(Array.isArray(element)){
element.forEach(function(e){
_this.descendElementIndex(e);
});
}
var pos=this.indexOf(element);
if(pos<=0){return};
this[pos]=this[pos-1];
this[pos-1]=element;
}
[1,4,6].forEach(function(e){
arr.descendElementIndex(e);
});
console.log(arr);//[2, 1, 4, 3, 6, 5, 7]
Call the descendElementIndex for selected elements in your widget like above sample array([1,4,6])