目标是在矩阵中找到零,并用零填充属于该元素的行和列。
我写了一个理论上应该可以工作的函数,但据我了解,在重写阶段发生了一些我无法理解的事情并且所有元素都被重置,告诉我如何修复它。
const myMatrix = [
[0, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 0, 4, 5],
[1, 2, 3, 4, 5],
[0, 2, 3, 4, 5]
];
function func (matrix) {
const matrixTemp = matrix.slice()
matrix.forEach ((row, rowIndex) => {
row.forEach((rowElem, elemId) => {
if(rowElem === 0) {
matrix[rowIndex].forEach((item,index) => {
if(matrixTemp[rowIndex][index] === 0) {
return
}
matrixTemp[rowIndex][index] = 0
})
matrix.forEach((item, index) => {
if(matrixTemp[index][elemId] === 0) {
return
}
matrixTemp[index][elemId] = 0
})
}
})
})
return matrixTemp
}
console.log("result:", func(myMatrix))
预期结果:
const resultMatrix = [
[0, 0, 0, 0, 0],
[0, 2, 0, 4, 5],
[0, 0, 0, 0, 0],
[0, 2, 0, 4, 5],
[0, 0, 0, 0, 0]
];
您好,您的代码的问题是这一行:
数组有一个引用数据类型,为了不引用另一个,你决定一个空切片就足够了。但是不,它适用于一维数组,但它不再适用于多维数组。
您可以用这个替换有问题的行:
此行将矩阵转换为字符串形式,并将其从字符串形式中取回。