[英]Extracting last n elements from array without disturbing original array
我想从没有拼接的数组中提取最后 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 个元素而不将其转换为新变量
您可以使用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; }
使用slice()
代替splice()
:
从文档:
slice()
方法将数组的一部分的浅拷贝返回到从开始到结束(不包括结束)选择的新数组对象中。 原始数组不会被修改。
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; }
你可以用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);
使用 Array.slice:
let arr = [0,1,2,3]
arr.slice(-2); // = [2,3]
arr; // = [0,1,2,3]
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]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.