javascript - 将所有 javascript 索引增加(或减少)一个数字

标签 javascript

我有一个像这样的数组:

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/

相关文章:

javascript - 如何为 SAHI 脚本生成 Javadoc 样式文档?

Javascript打印功能不打印表单元素更改

javascript - 如何让我的 Controller 知道加载数据的状态?

javascript - Passport JS -> require(...) 不是函数

javascript - 与 node.js 的 SSL 连接

javascript - 加载 gif 以在所有 ajax 脚本执行完毕后隐藏

javascript - 如何转义 RegExp 对象中使用的字符串

javascript - 嵌入式谷歌地图 - 如何定位到给定坐标

JavaScript 动态设置属性

javascript - 在 javascript 中渲染 html.erb 模板