从阵列中踢出NaN

时间:2017-06-17 04:51:05

标签: javascript arrays function nan

我无法从下面的数组“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值?

2 个答案:

答案 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>