繁体   English   中英

创建子数组时Javascript使用原始数组

[英]Javascript use original array when creating subarray

我是Java语言的新手,并且遇到以下问题:

我有一个保持不变的对象数组。 从这个数组,我想创建具有不同的开始和结束索引的子数组。

var origArr = [o1, o2, o3, o4, o5];
// origArr .length = 5
var subArr = origArr.slice(1, 4);
// subArr  = [o2, o3, o4];

通常我可以使用切片方法。 但这意味着将元素复制到新数组中。 由于我要做的只是更改起始索引和结束索引,是否有任何简单的方法可以执行此操作而无需每次都创建新副本? 我只是使用对原始数组的引用。

谢谢您的帮助。

克里斯

您无法使用标准JavaScript数组创建数组子集的“视图”。 可以使用新的类型数组进行操作 ,但是新的类型数组仅提供各种数字格式的存储。 您的变量名称( 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM