我是Javascript的新手,我遇到了以下问题:
我有一组对象保持不变。从这个数组中,我想创建具有不同开始和结束索引的子数组。
var origArr = [o1, o2, o3, o4, o5];
// origArr .length = 5
var subArr = origArr.slice(1, 4);
// subArr = [o2, o3, o4];
通常我可以使用切片方法。但这意味着元素被复制到新数组中。因为我想做的就是改变开始和结束索引,有没有简单的方法来做到这一点,而不是每次都创建一个新的副本?我只想使用对原始数组的引用。
感谢您的帮助。
克里斯
答案 0 :(得分:0)
您无法使用标准JavaScript数组创建数组子集的“视图”。您可以使用新的typed arrays执行此操作,但新类型的数组仅提供各种数字格式的存储。您的变量名称(o1
等)建议使用对象引用。
对于标准数组,您可以改为使用函数:
function subMapper(array, index, length) {
return function(i, value) {
if (index + i >= length) {
// Beyond the end of the array, do what you think is appropriate
}
if (arguments.length === 1) {
// Getting a value
return array[index + i];
}
// Setting a value
array[index + i] = value;
};
}
var origArr = [o1, o2, o3, o4, o5];
var subArrMapper = subMapper(origArr, 1, 4);
var x = subMapper(0);
console.log(x === o2); // true