测试返回 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;
}
由于该函数将在解释器遇到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;
}
提示:return
结束函数。因此,如果该项目至少存在于一个数组中,则返回true
。
你可以这样做:
function isItemOmnipresent(arrayOfArrays, item) {
return arrayOfArrays.every(arr => arr.includes(item));
}