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