簡體   English   中英

按數字增加(或減少)所有javascript索引

[英]increase (or decrease) all javascript indexes by a number

我有一個像這樣的數組:

 array = [1,2,3,4] console.dir(array) 

索引位置將在其中

array[0] = 1, array[1] = 2, array[2] = 3, array[3] = 4. 

我想做的就是將所有索引上移2,而無需更改要獲取的值:

array[2] = 0, array[3] = 1, array[4] = 2, array[5] = 3

我正在添加解決方案,以防萬一沒有更好的選擇,但是如果有一個統一的方案,我也不會感到驚訝。 理想情況下,這將更新原始數組,而不是將其輸入到新數組中。

具有數組連接的較短版本(假設您可以在開頭放置undefined是可以的,因為這是您在示例中所做的事情)

 array = [0,1,2,3]; array2 = [undefined, undefined]; array = array2.concat(array); console.dir(array); 

但是如果能做到這一點,我不會感到驚訝。 理想情況下,這將更新原始數組,而不是將其輸入到新數組中。

一個班輪,但我不是說我會用它在實際的代碼,這不僅是因為逗號操作者的濫用::-)

 const array = [1,2,3,4]; Object.keys(array).reverse().forEach(key => (array[+key+2] = array[key], delete array[key])); console.log(array); 

或者您說您對是否獲得新的陣列並不那么在意; 您可以通過(ab)使用reduce和逗號運算符獲得單線:

 const array = [1,2,3,4]; const new_array = array.reduce((a, e, i) => (a[i+2] = e, a), []); console.log(new_array); 

我是個無聊的人,我可能只會使用循環:

 const array = [1,2,3,4]; for (let n = array.length - 1; n >= 0; --n) { array[n+2] = array[n]; delete array[n]; } console.log(array); 

一種方法:

 array = [0,1,2,3] new_array = []; array.forEach(function(element,index){ new_array[index+2]=element }); array = new_array; console.dir(array); 

暫無
暫無

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

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