繁体   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