我正在尝试遍历嵌套数组,以确定数组中的元素是“开放”还是“高级”:
function openOrSenior(data) {
for (let i = 0; i <= data.length; i++) {
let dataElement = data[i];
for (let j = 0; j <= dataElement.length; j++) {
if (dataElement[0] >= 55 && dataElement[1] > 7) {
return ["Senior"];
}
return ["Open"];
}
}
}
输入
[[18, 20],[45, 2],[61, 12],[37, 6],[21, 21],[78, 9]]
该功能应输出
["Open", "Open", "Senior", "Open", "Open", "Senior"]
但是目前看来,它只是循环遍历主数组([18, 20]
)中的第一个元素,因为我的函数仅返回:
["Open"]
为什么该函数无法继续循环遍历其他嵌套数组并返回“ Open”或“ Senior”?范围可能有问题吗?
https://www.codewars.com/kata/categorize-new-member/train/javascript
我正在尝试实现我发现的here,它建议在for循环内使用for循环。
答案 0 :(得分:3)
无论检查成功与否,您都将返回,并且有多余的for循环。您应该使用单个for循环来迭代该数组,并根据检查推送“高级”或“打开”到result
数组。最后返回result
数组。
function openOrSenior(data) {
const result = [];
for (let i = 0; i < data.length; i++) {
const dataElement = data[i];
if (dataElement[0] >= 55 && dataElement[1] > 7) {
result.push("Senior");
} else result.push("Open");
}
return result;
}
console.log(openOrSenior([[18, 20],[45, 2],[61, 12],[37, 6],[21, 21],[78, 9]]));
或者您可以使用Array.map()
:
const openOrSenior = data =>
data.map(([a, b]) =>
a >= 55 && b > 7 ? 'Senior' : 'Open'
)
console.log(openOrSenior([[18, 20],[45, 2],[61, 12],[37, 6],[21, 21],[78, 9]]))
答案 1 :(得分:3)
您只需要一个循环和一个数组即可获取值。
promise