jQuery将数组的第二个元素移到第一个。怎么实现?

时间:2018-05-28 12:20:58

标签: javascript jquery

var unit_value = [1, 12, 100];
unit_value.push(unit_value.shift());
console.log(unit_value);

正如您所看到的,我将第一个元素移动到最后但我需要将数组的倒数第二个元素移到第一个如何实现此结果?数组的长度是动态的。

8 个答案:

答案 0 :(得分:1)

您可以试试这个:

unit_value.unshift(unit_value.splice(unit_value.length-2,1)[0]);

splice删除第二个位置的元素并返回已删除元素的数组(在这种情况下只有一个元素)。

unshift用于插入我们在数组开头删除的相同元素。

答案 1 :(得分:1)

var unit_value = [1, 12, 13, 100, 15];
var seconLastEle = unit_value[unit_value.length-2];
unit_value.splice(unit_value.lastIndexOf(seconLastEle), 1);
unit_value.unshift(seconLastEle);
console.log(unit_value);

答案 2 :(得分:1)

您不需要jQuery来实现解决方案,它只是简单的Javascript。

var unit_value = [1, 12, 100];
var removedUnit = unit_value.splice(unit_value.length - 2, 1)
unit_value.splice(0, 0, removedUnit)

答案 3 :(得分:0)

根据我的理解,您正在尝试将数组的第二个最后一个元素移动到第一个位置,同时确保数组的其余部分保持不变。

使用Spread Syntax

var unit_value = [1, 12, 100];

unit_value = [...unit_value.splice(unit_value.length - 2, 1), ...unit_value];
console.log(unit_value);

答案 4 :(得分:0)

您可以使用此功能:

function array_move(arr, old_index, new_index) {
  if (new_index >= arr.length) {
    var k = new_index - arr.length + 1;
    while (k--) {
      arr.push(undefined);
    }
  }
  arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
  return arr; // for testing
};

<强>演示

var unit_value = [1, 12, 100, 251];

function array_move(arr, old_index, new_index) {
  if (new_index >= arr.length) {
    var k = new_index - arr.length + 1;
    while (k--) {
      arr.push(undefined);
    }
  }
  arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
  return arr; // for testing
};

console.log(array_move(unit_value, (unit_value.length - 2), 0))

答案 5 :(得分:0)

可以使用带负索引的splice()从数组中作为一个元素的数组拉出最后一个,然后将unshift()第一个元素拉回到原始

&#13;
&#13;
var unit_value = [1, 2, 3, 4, 5];

unit_value.unshift(unit_value.splice(-2,1)[0])

console.log(unit_value)
&#13;
&#13;
&#13;

答案 6 :(得分:0)

一线解决方案

unit_value.unshift(unit_value.splice(unit_value.length-2,1)[0]);

答案 7 :(得分:0)

可能有一个更清洁的解决方案,但这里有一个......

&#13;
&#13;
var unit_value = [1, 12, 100];
unit_value = Array.prototype.concat(...[unit_value.splice(-2, 1),unit_value])
console.log(unit_value);
&#13;
&#13;
&#13;