如果传递的项目存在于内部的所有数组中,则返回 true - 无法返回 false?



测试返回 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));
}

最新更新