我无法从下面的数组“free_time_integers”中踢出NaN:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>parse testing</title>
</head>
<body>
<textarea name="" id="txt1" cols="30" rows="10">
1139
2938
3828
112
</textarea>
<script>
var free_time_hours = document.getElementById('txt1')
// free_time_hours.addEventListener("blur", free_time_console)
// Parse the free time values into times
// convert textarea into array
var breaker_array = free_time_hours.value.split(/\n/)
console.log("array freshly split")
console.log(breaker_array)
//convert array each element to a string
let free_time_integers = breaker_array.map(function(obj) {
return parseInt(obj)
})
// get the NaN out of the array
function remove_false(arr) {
arr.filter(Boolean)
}
remove_false(free_time_integers)
console.log("after map-parseInt and filter-true")
console.log(free_time_integers)
</script>
</body>
</html>
我也尝试过使用for循环和if语句检查是否有任何项目=== NaN,但这似乎也没有用。我在另一个线程中读到NaN不等于自己,这可能就是原因。有没有办法消除NaN值?
答案 0 :(得分:1)
您可以使用isNaN
检查是否存在NaN和Array.filter函数以保留非NaN的元素。另一个问题是你必须将结果存储在某个地方。因此,您的最终代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>parse testing</title>
</head>
<body>
<textarea name="" id="txt1" cols="30" rows="10">
1139
2938
3828
112
</textarea>
<script>
var free_time_hours = document.getElementById('txt1')
// free_time_hours.addEventListener("blur", free_time_console)
// Parse the free time values into times
// convert textarea into array
var breaker_array = free_time_hours.value.split(/\n/)
console.log("array freshly split")
console.log(breaker_array)
//convert array each element to a string
let free_time_integers = breaker_array.map(function(obj) {
return parseInt(obj)
})
// get the NaN out of the array
// my implementation here...
function remove_false(arr) {
return arr.filter(e => !isNaN(e));
}
// assign it to a variable
var filtered_arr = remove_false(free_time_integers)
console.log("after map-parseInt and filter-true")
console.log(filtered_arr)
</script>
</body>
</html>
答案 1 :(得分:-1)
filter
返回一个新数组,您需要将其重新分配给free_time_integers
function remove_false(arr) {
return arr.filter(Boolean)
}
free_time_integers = remove_false(free_time_integers)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>parse testing</title>
</head>
<body>
<textarea name="" id="txt1" cols="30" rows="10">
1139
2938
3828
112
</textarea>
<script>
var free_time_hours = document.getElementById('txt1')
// free_time_hours.addEventListener("blur", free_time_console)
// Parse the free time values into times
// convert textarea into array
var breaker_array = free_time_hours.value.split(/\n/)
console.log("array freshly split")
console.log(breaker_array)
//convert array each element to a string
let free_time_integers = breaker_array.map(function(obj) {
return parseInt(obj)
})
// get the NaN out of the array
function remove_false(arr) {
return arr.filter(Boolean)
}
free_time_integers = remove_false(free_time_integers)
console.log("after map-parseInt and filter-true")
console.log(free_time_integers)
</script>
</body>
</html>