大部分都可以做,只想知道为什么这不起作用。
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 函数检查它是否可以转换为整数。 如果它可以转换为整数,转换为整数并添加到数字变量,否则不对该元素执行任何操作并推送到字母数组。
这根本不起作用。为什么?
答案 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
。
<强>输出强>