gpt4 book ai didi

javascript - 测试检查数组是否原地反转

转载 作者:行者123 更新时间:2023-12-05 06:34:49 25 4
gpt4 key购买 nike

我有一个方法,我已经把它放在数组原型(prototype)上来反转数组(这只是为了学习目的)。此方法应原地反转数组。

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,所以它不会真正检查任何内容。

我该如何编写一个测试来检查数组是否原地反转?

最佳答案

const assert = require('assert');


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('yarra1', () => {
it('should reverse an array in place and return it', () => {
let arr = [1,2,3];
let rev = [3,2,1];
let reversedArr = arr.yarra();
for(let i =0;i<arr.length;i++){
assert(reversedArr[i]===rev[i])
}
});
});

describe('yarra2', () => {
it('should reverse an array in place and return it', () => {
let arr = [1,2,3];
let rev = [3,2,1];
let reversedArr = arr.yarra();
assert(reversedArr.toString() === rev.toString())
});
});

关于javascript - 测试检查数组是否原地反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50011384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com