计算平均值并使用数组连接字符串

时间:2016-12-27 03:15:41

标签: javascript arrays math logic

大部分都可以做,只想知道为什么这不起作用。

任务

function mean(list) {
  var letters = [];
  var numbers = 0;
  for (var listval in list) {
    console.log(Number(list[listval]))
    if (typeof(Number(list[listval])) === typeof 0) {
      numbers += Number(list[listval]);
    } else {
      letters.push(list[listval]);
    }
  };
  console.log(letters);
  console.log(numbers);
}

mean(['u', '6', 'd', '1', 'i', 'w', '6', 's', 't', '4', 'a', '6', 'g', '1', '2', 'w', '8', 'o', '2', '0']);

逻辑

感谢您抽出宝贵时间来查看我的问题。 我希望我的程序遍历列表中的每个元素,并使用 Number 函数检查它是否可以转换为整数。 如果它可以转换为整数,转换为整数并添加到数字变量,否则不对该元素执行任何操作并推送到字母数组。

这根本不起作用。为什么?

1 个答案:

答案 0 :(得分:0)

这里的问题是for ... in循环,它将每个索引转换为string并将其搞砸。你需要在这里尝试使用for循环:

function mean(list) {
  var letters = [];
  var numbers = 0;
  for (var i = 0; i < list.length; i++) {
    var listval = i;
    console.log(parseInt(list[listval]));
    if (parseInt(list[listval]) == list[listval]) {
      numbers += parseInt(list[listval]);
    } else {
      letters.push(list[listval]);
    }
  };
  console.log(letters);
  console.log(numbers);
}

mean(['u', '6', 'd', '1', 'i', 'w', '6', 's', 't', '4', 'a', '6', 'g', '1', '2', 'w', '8', 'o', '2', '0']);

此外,条件总是真实的,因为双方都给你Number NaN是数字。因此,您需要查看NaN

<强>输出

preview