[英]JavaScript - 'Normalize' array indexes
我正在尋找一種方法來“標准化” Javascript中的數組索引。 我有一個大數組( _spm
),其中包含帶有數字索引的值,例如( _spm[201023]
)。
(對於您來說,要了解:從零開始重新索引數組。)
我需要一種使所有記錄具有更人性化的索引的方法(也可以進行排序)。
我的意思是:
function normalize( arrayWithMessedUpIndexes ){ return reIndexedAndOrderedArray }
考慮到以下因素,可能的輸入是數組_spm
:
_spm[201023] = "s";
_spm[376615] = "m";
我正在尋找的方法的可能輸出(使用上面的輸入數組):
_spm[0] = "s"
_spm[1] = "m"
var arr = [];
arr [42] = "foo";
arr [1337] = "bar";
arr.filter (function () {return true}); //["foo", "bar"]
現在,這是如何工作的? 讓我們看一下描述該過程的ES5§15.4.4.20 。
Pk
為ToString(k)
。 kPresent
為使用參數Pk
調用O
的[[HasProperty]]內部方法的結果。 kPresent
為true,則 由於示例數組的第一個初始化索引為42,因此對於每n < 42
, n in arr
或n in arr
調用arr.hasOwnProperty (n)
計算結果為false
。
鑒於此,不滿足步驟9c中描述的條件,因此將跳過索引。
請注意, [].filter
是ES5,可能與舊版瀏覽器不兼容。
數組索引總是排序的,因此,您要做的就是刪除不需要的元素
_spm = _spm.filter(function(v) { return v != undefined });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.