提问人:VaQuellJQL 提问时间:9/28/2023 更新时间:9/28/2023 访问量:24
我正在尝试从混合数组中获取所有字符串的平均长度。但在我计算之前,我只想关注这项任务的一部分
I am trying to get the average length of all strings from a mixed array. But before I count, I want to only focus on the one part of this task
问:
好吧,到目前为止,我已经完成了:
- 我分配了两个变量 - 一个是混合数组,另一个是空的,所以我可以将字符串从第一个推到第二个。
- 我使用了循环,因此程序可以检查数组的每个元素。
for
- 我设置了条件语句:如果特定元素的类型是字符串,那么它将被推送到这个空数组中;
- 但如果是其他任何东西,那么它将被推回原始数组。
- 在所选 ID 处显示由第一个数组中的字符串填充的新数组。
- 调用函数。 但随后弹出“RangeError: invalid array length”。我不知道出了什么问题,甚至不知道如何解决这个问题。有什么想法吗?
完整代码:
<!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>
起初,我在条件语句的末尾没有“return”,因此我虽然它丢失了。但它不是,现在也不是问题,因为它与长度无关,所以在这一点上我什至不知道出了什么问题。
答:
0赞
Orifjon
9/28/2023
#1
您在这里有多个问题。首先,您不必将当前对象推回原始数组。当你阅读它时,它会停留在那里。其次,一旦您从函数返回,函数的其余部分就不会执行。
查看文档类型,了解如何使用它。我还建议研究一下数组的过滤方法。
更新后的方法: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");
评论
typeof
从不返回 。''
H2
H1
h2
h2
h3
br
p