簡體   English   中英

從數組中提取最后 n 個元素而不干擾原始數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM