【发布时间】:2021-07-06 10:26:12
【问题描述】:
大家好,我被困在一个练习题上,真的想不出一个好的解决方案。
问题是:
"loopOverArray() 函数将一个方向数组作为参数,并且有一个空对象保存为一个变量,该变量存储每个方向以及它在数组中的次数。使用 for 循环,此函数需要循环遍历数组中的每个元素并更新对象以显示在数组中找到每个方向的次数。"
预期的输出应如下所示:
loopOverArray(["n", "s", "e", "e"] ==> returns {n: 1, s: 1, e: 2}
loopOverArray(["north", "south", "south", "north"] ==> returns {north: 2, south: 2}
loopOverArray([]) ==> returns {}
这是我迄今为止尝试过的。我是 JS 新手,所以请原谅非常笨拙的尝试。
function loopOverArray(directions) {
let ncount = 0;
let ecount = 0;
let scount = 0;
let wcount = 0;
for (let direction of directions) {
if (direction == "n") {
ncount += 1;
} else if (direction == "e") {
ecount += 1;
} else if (direction == "s") {
scount += 1;
} else {
wcount += 1;
}
}
console.log(`n: ${ncount}, s: ${scount}, e: ${ecount}, w: ${wcount}`)
}
loopOverArray(["n", "n", "s"]);
问题是我认为这不能正确满足问题要求,而且非常难看。肯定有更好的办法。任何帮助将不胜感激
【问题讨论】:
-
loopOverArray()不返回任何内容 + Working with objects - JavaScript | MDN -
你错过了这个重要的要求:
there is an empty object saved as a variable which stores each direction -
您的方法没有问题。这很好。你只迭代数组一次。你可以使用 switch 来避免 if else 因为每个 if else 条件都会被检查。
-
@AmitVerma “你的方法没有问题” - 只有当你忽略它不符合要求的事实时,它应该做o.O
标签: javascript arrays for-loop