将一组项目从阵列中移动指定的位置数

时间:2017-05-10 13:43:55

标签: javascript arrays algorithm

我想在javascript中使用一些算法来执行以下操作:

例如: 我有以下数组:

条目:[1,2,3,4,5,6,7]

enter image description here

我希望所选项目(2,3,6)在数组中各自下降一个位置。

预期产出:[2,3,1,4,6,5,7]

enter image description here

如何为所选项目的组处理执行此算法。

我尝试使用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
};

2 个答案:

答案 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])