使用JavaScript遍历嵌套数组元素

快乐手31

我试图遍历嵌套数组,以确定数组中的元素是“打开”还是“高级”:

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

我试图实现在这里发现的内容,这建议在for循环内进行for循环。

或Drori

无论检查成功与否,您都将返回,并且有多余的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]]))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章