到目前为止,我已经做到了:
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>
起初,我没有在条件语句的末尾“返回”,因此我认为它是缺失的。但它不是,现在仍然不是问题,因为它与长度无关,所以在这一点上,我甚至不知道出了什么问题。
1条答案
按热度按时间bejyjqdl1#
你在这里有很多问题。首先,你不必将当前对象推回原始数组。当你读它的时候,它就呆在那里。第二,一旦从函数返回,函数的其余部分不会执行。
看看typeof documentation如何使用它。我也建议看看filter数组的方法。
更新的
countAverageString
方法:或者你可以这样做: