function NegativeArray() {
// 内部数组
var array = [];
// 获取指定索引的元素
this.get = function(index) {
if (index >= 0) {
return array[index];
} else {
return array[array.length + index];
}
};
// 设置指定索引的元素
this.set = function(index, value) {
if (index >= 0) {
array[index] = value;
} else {
array[array.length + index] = value;
}
};
// 获取数组长度
this.length = function() {
return array.length;
};
// 添加元素到数组末尾
this.push = function(value) {
array.push(value);
};
// 移除数组末尾的元素
this.pop = function() {
return array.pop();
};
}
在上面的示例中,我们创建了一个名为NegativeArray
的构造函数,它封装了一个内部数组array
。该构造函数定义了一些方法来操作这个数组。
get(index)
方法用于获取指定索引的元素。如果索引为正数,则直接通过索引访问数组元素;如果索引为负数,则通过计算array.length + index
来获取对应的元素。set(index, value)
方法用于设置指定索引的元素。如果索引为正数,则直接通过索引设置数组元素;如果索引为负数,则通过计算array.length + index
来设置对应的元素。length()
方法用于获取数组的长度,直接返回array.length
。push(value)
方法用于将元素添加到数组的末尾,直接调用array.push(value)
实现。pop()
方法用于移除数组末尾的元素,并返回被移除的元素,通过array.pop()
实现
使用示例:
var arr = new NegativeArray();
arr.push(1);
arr.push(2);
arr.push(3);
console.log(arr.get(0)); // 输出:1
console.log(arr.get(-1)); // 输出:3
arr.set(-2, 4);
console.log(arr.get(1)); // 输出:4
在上面的示例中,我们创建了一个NegativeArray
对象arr
,并使用push
方法向数组中添加元素。然后使用get
方法获取索引为0和-1的元素,以及使用set
方法设置索引为-2的元素。最后通过console.log
输出结果。
这样封装的NegativeArray
对象支持使用负数索引访问和修改数组元素,同时保留了正常数组的功能。