【发布时间】:2020-10-27 03:59:21
【问题描述】:
我有一个问题,我应该从数组中删除多余的方向。例如,如果我有 ["N", "S", "E", "W", "E"],我会返回 ["E"],因为南北抵消,东西抵消离开一个东。如果它们是相邻的,它们就会抵消。如果我有 ['W', 'N', 'S', 'E', 'N'],它返回 ["N"] 因为 N,S 取消,留下 W, E 也取消。我创建了一个有效的函数:
function mapQuest(arr) {
const directions = { N: 2, S: -2, W: 1, E: -1 };
for (let i = 0; i < arr.length; i++) {
while (directions[arr[i]] + directions[arr[i + 1]] == 0) {
arr.splice(i, 2);
i = 0;
}
}
return arr;
}
但问题是要求在 javascript 中使用 reduce 方法解决问题。我开始写一篇:
function mapQuest(arr) {
let result = arr.reduce((acc, dir) => acc[dir]++, { N: 0, S: 0, W: 0, E: 0 });
}
但我不知道从这里去哪里以及如何在没有 for 循环遍历 i 的情况下仅取消相邻方向。如果有人可以帮忙,那就太好了。谢谢!
【问题讨论】:
标签: javascript arrays methods reduce