【问题标题】:Calculate mean and concatenate string with arrays计算平均值并将字符串与数组连接起来
【发布时间】:2016-12-27 03:15:40
【问题描述】:

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

任务

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 函数检查它是否可以转换为整数。 如果它可以转换为整数,则转换为整数并添加到 numbers 变量中,否则对元素不执行任何操作并推送到 letters 数组。

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

【问题讨论】:

  • 检查我的答案并告诉我它是否有效?
  • 我得到 36 作为输出和所有列表。
  • 这是关键:if (parseInt(list[listval]) == list[listval]) {
  • 如果我的回答对您有帮助,请不要忘记点击勾选按钮接受我的回答。
  • 哥们,你还在吗?

标签: javascript arrays math logic


【解决方案1】:

这里的问题是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

输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2017-10-12
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多