测试返回true,但未能返回false。谁能解释一下为什么吗?
function isItemOmnipresent(arrayOfArrays, item) {
for (let i = 0; i < arrayOfArrays.length; i++) {
for (let j = 0; i < arrayOfArrays[i].length; j++) {
if (arrayOfArrays[i][j] === item) {
return true;
}
}
}
return false;
}发布于 2020-01-25 23:32:31
提示:return结束该函数。因此,如果该项至少存在于其中一个数组中,则返回true。
你可以这样做:
function isItemOmnipresent(arrayOfArrays, item) {
return arrayOfArrays.every(arr => arr.includes(item));
}发布于 2020-01-25 23:32:50
由于该函数将在解释器遇到return时结束,因此只应在整个数组测试失败时返回。调整for循环方法,检查在找到匹配项时设置的标志:
function isItemOmnipresent(arrayOfArrays, item) {
for (let i = 0; i < arrayOfArrays.length; i++) {
let found = false;
for (let j = 0; i < arrayOfArrays[i].length; j++) {
if (arrayOfArrays[i][j] === item) {
found = true;
break;
}
}
if (!found) return false;
}
return true;
}https://stackoverflow.com/questions/59914287
复制相似问题