单元测试例子如下
const compareArray = [
{
arr1: ['no', 'no', 'yes', 'yes'], // 数组1
arr2: ['yes', 'yes', 'yes', 'no'], // 数组2
result: false, // 返回结果
},
{
arr1: ['no', 'yes', 'yes'],
arr2: ['yes', 'no'],
result: false,
},
{
arr1: ['no', 'yes', 'yes'],
arr2: ['yes', 'no', 'yes'],
result: true,
},
{
arr1: ['no', 'yes'],
arr2: ['no', 'yes'],
result: true,
},
]
错误的方法xxx
function check(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false
}
arr1.forEach(item=> {
if (arr2.indexOf(item) === -1) {
return false
}
})
return true
}
这个例子的问题所在是,没有考虑重复的数组,测试的case1就不满足
正确的方法
function check(arrOne: any, arrTwo: any) {
const arr1 = arrOne.map((i: any) => i)
const arr2 = arrTwo.map((i: any) => i)
if (arr1.length !== arr2.length) {
return false
}
let temp = []
for (let i = 0; i < arr1.length; i++) {
const item = arr1[i]
if (arr2.indexOf(item) !== -1) {
temp.push(item)
arr2.splice(arr2.indexOf(item), 1)
} else {
temp = []
break
}
}
return temp.length === arrTwo.length
}
划重点