从数组中提取最后n个元素,而不会干扰原始数组

时间:2019-01-03 14:14:59

标签: javascript arrays

我想从数组中提取最后n个元素而不进行拼接

我有如下数组,我想从新数组[33,44]的任何数组中获取最后2个或n个元素

[22, 55, 77, 88, 99, 22, 33, 44] 

我试图将旧的阵列复制到新的阵列上,然后进行拼接。但是我相信还必须有其他更好的方法。

var arr = [22, 55, 77, 88, 99, 22, 33, 44] ;
var temp = [];
temp = arr;
temp.splice(-2);

以上代码还从原始数组arr中删除了最后2个元素;

所以我怎么能从原始数组中提取最后n个元素而不将其转换为新变量

5 个答案:

答案 0 :(得分:8)

您可以使用Array#slice,它不会更改原始数组。

var array = [22, 55, 77, 88, 99, 22, 33, 44];
    temp = array.slice(-2);

console.log(temp);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:6)

使用slice()代替splice()

Docs起:

  

slice()方法将数组的一部分的浅表副本返回到从开始到结束(不包括end)选择的新数组对象中。原始数组将不会被修改。

var arr = [22, 55, 77, 88, 99, 22, 33, 44] ;

var newArr = arr.slice(-2);

console.log(newArr);
console.log(arr);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:0)

您可以使用Array.from创建浅表副本,然后对其进行拼接。

或者按照其他答案的建议使用Array.prototype.slice

const a = [22, 55, 77, 88, 99, 22, 33, 44];
console.log(Array.from(a).splice(-2));
console.log(a);

答案 3 :(得分:0)

使用Array.slice:

let arr = [0,1,2,3]
arr.slice(-2); // = [2,3]
arr; // = [0,1,2,3]

答案 4 :(得分:0)

var arr = [22, 55, 77, 88, 99, 22, 33, 44] ;
var temp = [];
var arrCount = arr.length;
temp.push(arr[arrCount-1]);
temp.push(arr[arrCount-2]);