【发布时间】:2014-10-02 11:55:53
【问题描述】:
我是 Javascript 新手,遇到以下问题:
我有一个保持不变的对象数组。从这个数组中,我想创建具有不同开始和结束索引的子数组。
var origArr = [o1, o2, o3, o4, o5];
// origArr .length = 5
var subArr = origArr.slice(1, 4);
// subArr = [o2, o3, o4];
通常我可以使用切片方法。但这意味着元素被复制到新数组中。由于我想要做的就是改变开始和结束索引,有没有什么简单的方法可以做到这一点,而无需每次都创建一个新副本?我只会使用对原始数组的引用。
感谢您的帮助。
克里斯
【问题讨论】:
-
如果要修改原始数组,则必须使用
.pop()和.shift()。 -
你的意思是修改原来的数组吗?
-
您是否正在寻找一个可以作为原始数组视图的对象,所以
origArr[2] = 0会导致subArr[1]也为0?没有内置的东西。您可以为它编写自己的包装器对象,尽管它可能比仅使用切片要慢。 -
你到底想做什么?你能给我们一个更大的图景吗?我们可能会建议一种算法。
-
子数组用作另一个库中函数的参数。随着用户更改滑块的值,正在传递的子数组(时间段)的长度会发生变化。所以传递给函数的数据范围确实发生了变化,但元素保持不变。
标签: javascript arrays clone