我有一个像这样的数组:
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
我添加我的解决方案只是为了以防万一没有更好的选择,但如果有一个单行代码可以做到这一点,我不会感到惊讶。理想情况下,这会更新原始数组,而不是将其输入到新数组中。
最佳答案
but I wouldn't be surprised if there's a one-liner to do it. Ideally, that updates the original array rather than inputting it into a new one.
有一个单行代码,但我并不是说我会在实际代码中使用它,尤其是因为逗号运算符的滥用::-)
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);
关于javascript - 将所有 javascript 索引增加(或减少)一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50173047/