-1

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

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

4

8 回答 8

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)
于 2018-05-28T12:33:16.517 回答
1

你可以试试这个:

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

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

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

于 2018-05-28T12:30:57.323 回答
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);

于 2018-05-28T12:31:08.817 回答
0

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

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

于 2018-05-28T12:39:22.863 回答
0

一条线解决方案

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

于 2018-05-28T12:34:58.967 回答
0

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

使用传播语法

var unit_value = [1, 12, 100];

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

于 2018-05-28T12:26:23.167 回答
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))

于 2018-05-28T12:27:28.627 回答
0

可以使用splice()负索引将数组中的倒数第二个作为一个元素的数组,然后将unshift()第一个元素恢复为原始元素

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

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

console.log(unit_value)

于 2018-05-28T12:29:20.483 回答