函数“findSmallerDigits”应返回较小数字的数组JavaScript

fumotvh3  于 2022-12-28  发布在  Java
关注(0)|答案(1)|浏览(111)

编写一个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函数来实现,但是我不知道怎么做。

jdzmm42g

jdzmm42g1#

你需要迭代当前元素右边的元素,虽然你可以使用.filter,但.reduce可能更合适,因为你需要知道 * 有多少 * 更小(一个数字),而不是 * 哪些 * 更小(一个数组)。

const countNextSmaller = numbers => numbers.map(
  (number, i) => numbers.slice(i).reduce(
    (a, b) => a + (b < number),
    0
  )
);
console.log(countNextSmaller([1, 5, 4, 3, 6, 2]));

相关问题