我有一个方法,它被放在数组原型上,用于反转数组(仅用于学习目的)。这个方法应该原地反转数组。
Array.prototype.yarra = function () {
for (let left=0, right=this.length-1; left<right; left++, right--) {
[this[left], this[right]] = [this[right], this[left]]
}
return this
};
我已经编写了一些测试来检查方法是否按预期工作。
describe('yarra', function () {
it('should reverse an array in place and return it', function () {
var arr = [1,2,3];
var reversedArr = arr.yarra();
reversedArr.should.eql([3,2,1]);
arr.should.equal.reversedArr;
[4,5,6].yarra().should.eql([6,5,4]);
});
});
var reversedArr = arr.yarra()
意味着 arr 总是等于 reversedArr,所以它实际上没有检查任何内容。如何编写一个测试来检查是否原地反转了数组?
arr.should.equal.arr.slice().yarra()
,这是你想表达的意思吗? - OctaviaLo