在 JavaScript 中的相应数字之后计算较小的数字
问题
我们需要编写一个JavaScript函数,它将数字数组作为第一个也是唯一的参数。
我们的函数应该根据输入数组准备一个新数组。并且这个新数组的每个对应元素应该是比原始数组中对应元素小的元素数。
例如,如果函数的输入是-
const arr = [4, 7, 1, 4, 7, 5, 3, 8, 9];
那么输出应该是-
const output = [2, 4, 0, 1, 2, 1, 0, 0, 0];
输出说明:
因为它右边小于4的数字是2(1和3),对于7,它是4(1、4、5、3)等等。
示例
此代码将是-
const arr = [4, 7, 1, 4, 7, 5, 3, 8, 9]; const countSmaller = (array = [], num) => array.reduce((acc, val) => { if(val < num){ acc++; }; return acc; }, 0); const smallerArray = (arr = []) => { const res = []; for(let i = 0; i < arr.length; i++){ const el = arr[i]; res[i] = countSmaller(arr.slice(i, arr.length), el); }; return res; }; console.log(smallerArray(arr));输出结果
控制台中的输出将是-
[ 2, 4, 0, 1, 2, 1, 0, 0, 0 ]