将最终给定数量的元素移到阵列的前面

Shift final given number of elemts to front of array

本文关键字:元素 阵列 前面      更新时间:2023-09-26

我有一个数组

var itemsArr = ["blue", "wine", "orange", "yellow", "cyan"];

如何从数组的 END 到 FRONT 获取一定数量的数组元素?

预期产出:

示例 1:

//shift final 3 elements
var expected = ["orange", "yellow", "cyan", "blue", "wine"];

示例 2:

//shift final 2 elements
var expected = ["yellow", "cyan", "blue", "wine", "orange"];

这里有一种方法可以做到这一点:

JSBin 示例

var a = ["blue", "wine", "orange", "yellow", "cyan"];
function shifter(arr, n) {
  var shifted = arr.splice(-n);
  return shifted.concat(arr);
}

console.log(shifter(a, 3));
您可以使用与

Array#spliceArray#concat 结合使用。

var itemsArr = ["blue", "wine", "orange", "yellow", "cyan"];
itemsArr = itemsArr.splice(-3).concat(itemsArr);
document.write('<pre>' + JSON.stringify(itemsArr, 0, 4) + '</pre>');
itemsArr = itemsArr.splice(3).concat(itemsArr);
document.write('<pre>' + JSON.stringify(itemsArr, 0, 4) + '</pre>');

function moveToFront(x, noFromEnd){
    if(noFromEnd > x.length){
        alert("Immpossible");
    }
    else if(noFromEnd == x.length){
        return x;
    }
    else if(noFromEnd < 0){
        alert("immpossible")
    }
    else if(noFromEnd == 0){
        return x;
    }
    else{
        var returnArray = []
        for(var i=(x.length-noFromEnd);i<x.length;i++){
            returnArray.push(x[i])
        }
        for(var i=0; i<(x.length-noFromEnd); i++){
            returnArray.push(x[i])
        }
        return returnArray;
    }
}