javascript 我试图从一个混合数组中得到所有字符串的平均长度,但在我数之前,我想只关注这个任务的一部分

rvpgvaaj  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(64)

到目前为止,我已经做到了:
1.我已经分配了两个变量-一个是混合数组,另一个是空的,所以我可以将字符串从第一个推到第二个。
1.我使用了循环for,所以程序可以检查数组的每个元素。
1.我设置了条件语句:如果一个特定元素的类型是字符串,那么它将被推送到这个空数组;
1.但是如果是其他的,那么它将被推回原始数组。
1.显示一个新的数组,其中填充了第一个数组中的字符串。
1.调用函数。但随后的'RangeError:无效数组长度'弹出。我不知道哪里出了问题,甚至不知道如何解决。有什么想法吗?
完整代码:

<!DOCTYPE html>
<html>
<head>
  <title>Task number five</title>
</head>
<body>
  <h2>Average length of the string in this array:</h2>
  <p id="averageLength"></p>
  <br>
  <h2>The sum of all the numbers in this array:</h2>
  <p id="sumNumbers"></p>
  <script>
    const firstArray = ["String 1", { name: "Lola" }, 2, 32.22024, false, 2.1112, true, "String 2", "String 3", "Jim likes dogs", [], {}]
    const stringArray = [];
    function countAverageString(data) {
      for ( let i = 0; i < data.length; i++) { 
        if (typeof data[i] === "") {
          stringArray.push(data[i]);
        }
        else {
          firstArray.push(data[i]);
        }}
        return firstArray;
        return stringArray;
        document.getElementById("sumNumbers").innerHTML = stringArray;
       }
    countAverageString(firstArray);

  </script>
</body>
</html>

起初,我没有在条件语句的末尾“返回”,因此我认为它是缺失的。但它不是,现在仍然不是问题,因为它与长度无关,所以在这一点上,我甚至不知道出了什么问题。

bejyjqdl

bejyjqdl1#

你在这里有很多问题。首先,你不必将当前对象推回原始数组。当你读它的时候,它就呆在那里。第二,一旦从函数返回,函数的其余部分不会执行。
看看typeof documentation如何使用它。我也建议看看filter数组的方法。
更新的countAverageString方法:

// rest of your code
    function countAverageString(data) {
      for ( let i = 0; i < data.length; i++) { 
        if (typeof data[i] === "string") {
          stringArray.push(data[i]);
        }
      }
      document.getElementById("sumNumbers").innerHTML = stringArray;
    }
    countAverageString(firstArray);

或者你可以这样做:

const stringArray = firstArray.filter(i => typeof i === "string");

相关问题