簡體   English   中英

如何使用 JavaScript 輕松截斷數組?

[英]How to easily truncate an array with JavaScript?

Linq 有一個方便的運算符方法,稱為Take() ,可以在任何實現IEnumerable的東西中返回給定數量的元素。 jQuery 中是否有類似的東西用於處理數組?

或者,換一種方式問:如何在 Javascript 中截斷數組?

有一個切片方法

 let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] arr = arr.slice(0, 4); console.log(arr);

將返回前四個元素。

如果您想丟棄其他值,請不要忘記將其分配回您的變量。

注意:這只是普通的 javascript,不需要 jquery。

(2 年后......)如果你真的想截斷一個數組,你也可以使用length屬性:

var stooges = ["Moe", "Larry", "Shemp", "Curly", "Joe"];
stooges.length = 3; // now stooges is ["Moe", "Larry", "Shemp"]

注意:如果分配的長度長於當前長度,未定義的數組元素的引入,如下圖所示。

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = 5;
alert(typeof stooges[4]); // alerts "undefined"

編輯:

正如下面提到的@twhitehead,通過這樣做可以避免添加未定義的元素:

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = Math.min(stooges.length, 5); 
alert(stooges.length)// alerts "3"

如果您問如何截斷(通過從末尾刪除元素來修改數組),請使用splice

var a1 = [2,4,6,8];
var a2 = a1.splice(-2,2); // a1=[2,4], a2=[6,8]

如果您詢問如何在不修改原始數組的情況下檢索數組的子集,請使用slice

var a1 = [2,4,6,8];
var a2 = a1.slice(-2); // a1=[2,4,6,8], a2=[6,8]

只要記住拼接修改,切片訪問。 作為第一個 arg 的負數表示從數組末尾開始的索引。

將 .length 屬性設置為較低的值。

官方文檔: Array.prototype.length

如果您既要獲取元素又要從數組中刪除它們,請使用splice

如果要保留數組中的元素,請使用slice

如果要選擇性地從數組中提取元素,可以使用jQuery.grep方法。

(來自 jQuery 文檔)

var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];

$("div").text(arr.join(", "));

arr = jQuery.grep(arr, function(n, i){
  return (n != 5 && i > 4);
});

$("p").text(arr.join(", "));

arr = jQuery.grep(arr, function (a) { return a != 9; });
$("span").text(arr.join(", "));

如果您使用的是 take(3),我將假設該數組最初被定義為參數 3

const result = new Array(3) 
// result = [undefined , undefined , undefined]

如果您的迭代器僅返回 2 個值,或者在 take(3) 命令之后過濾了這些值並刪除了 1 個值,則數組看起來像

//result = [1 , 1 , undefined]

所以要截斷你可以使用的空元素數組

 result.filter((value) => value !== undefined);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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