var unit_value = [1, 12, 100];
unit_value.push(unit_value.shift());
console.log(unit_value);
如您所见,我将第一个元素移至最后一个,但我需要将数组的倒数第二个元素移至第一个如何实现此结果?数组的长度是动态的。
var unit_value = [1, 12, 100];
unit_value.push(unit_value.shift());
console.log(unit_value);
如您所见,我将第一个元素移至最后一个,但我需要将数组的倒数第二个元素移至第一个如何实现此结果?数组的长度是动态的。
您不需要 jQuery 来实现解决方案,它是纯 Javascript。
var unit_value = [1, 12, 100];
var removedUnit = unit_value.splice(unit_value.length - 2, 1)
unit_value.splice(0, 0, removedUnit)
你可以试试这个:
unit_value.unshift(unit_value.splice(unit_value.length-2,1)[0]);
splice
删除倒数第二个位置的元素并返回已删除元素的数组(在这种情况下只有一个元素)。
unshift
用于插入我们在数组开头删除的相同元素。
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);
可能有更清洁的解决方案,但这里有一个......
var unit_value = [1, 12, 100];
unit_value = Array.prototype.concat(...[unit_value.splice(-2, 1),unit_value])
console.log(unit_value);
一条线解决方案
unit_value.unshift(unit_value.splice(unit_value.length-2, 1)[0]);
根据我的理解,您正在尝试将数组的倒数第二个元素移动到第一位,同时确保数组的其余部分保持不变。
使用传播语法
var unit_value = [1, 12, 100];
unit_value = [...unit_value.splice(unit_value.length - 2, 1), ...unit_value];
console.log(unit_value);
您可以使用此功能:
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))
可以使用splice()
负索引将数组中的倒数第二个作为一个元素的数组,然后将unshift()
第一个元素恢复为原始元素
var unit_value = [1, 2, 3, 4, 5];
unit_value.unshift(unit_value.splice(-2,1)[0])
console.log(unit_value)