编写一个countNextSmaller函数,该函数接受一个数字数组并返回一个新的数字数组,其中第i个元素必须是numbers [i]右边小于numbers [i]的数字个数。
这是我的代码:
function countNextSmaller(numbers) {
const arr = [];
for (let i = 0; i < numbers.length; i++) {
if (numbers[i + 1] < numbers[i]) {
arr.push(numbers[i + 1]);
} else {
arr.push(0);
}
}
return arr;
}
我想这可以用filter函数来实现,但是我不知道怎么做。
1条答案
按热度按时间jdzmm42g1#
你需要迭代当前元素右边的元素,虽然你可以使用
.filter
,但.reduce
可能更合适,因为你需要知道 * 有多少 * 更小(一个数字),而不是 * 哪些 * 更小(一个数组)。