gpt4 book ai didi

javascript - 如何使用 && 正确检查两个条件

转载 作者:行者123 更新时间:2023-11-29 18:40:16 25 4
gpt4 key购买 nike

我想遍历一个数组并检查每个元素是一个数字还是一个可能变成数字的字符串(例如“42”)。如果它可以被“转换”,那么该元素应该存储在一个新数组中。

这是我的代码,我将所有转换后的元素推送到一个新数组中。注意:我还想计算有多少元素从字符串“转换”为数字,有多少没有。

function numberConverter(arr) {
var converted = []
var counterConverted = 0
var counterNotConverted = 0
for (var c of arr) {
if (typeof c == "string" && Number(c) == "number") {
counterConverted++;
parseInt(c, 10);
converted.push(c)
} else {
counterNotConverted++
}
}
if (counterConverted == 0) {
return "no need for conversion"
} else {
return counterConverted + " were converted to numbers: " + converted + "; " + counterNotConverted + " couldn't be converted"
}
}

我知道我的 if 条件if(typeof c == "string"&& Number(c) == "number")逻辑上有缺陷,但我无法弥补原因。

感谢任何提示,请用初学者的术语解释。

最佳答案

您可以像这样测试字符串是否可以转换为数字:

val !== "" && Number.isNaN(Number(val)) === false

代码可以这样写:

function numberConverter(arr) {
var converted = [];
var notconverted = [];
arr.forEach(function(val) {
if (typeof val === "number") {
converted.push(val);
} else if (typeof val === "string" && val !== "" && Number.isNaN(Number(val)) === false) {
converted.push(Number(val));
} else {
notconverted.push(val);
}
});
console.log("converted", converted);
console.log("not converted", notconverted);
}
numberConverter([0, "1", "", "123-foo", undefined, null, true, [], {}]);

关于javascript - 如何使用 && 正确检查两个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57709531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com