在 JavaScript 中使数组唯一

javascriptweb developmentfront end technology

问题

我们需要编写一个 JavaScript 函数,该函数将数字数组 arr 作为第一个也是唯一的参数。

移动包括选择任何 arr[i],并将其加 1。我们的函数应该返回使数组 arr 中的每个值唯一的最少移动次数。

例如,如果函数的输入是 −

const arr = [12, 15, 7, 15];

那么输出应该是 −

const output = 1;

输出说明

因为如果我们将任意 15 增加到 16,数组将由所有唯一元素组成。

示例

其代码为 −

const arr = [12, 15, 7, 15];
const makeUnique = (arr = []) => {
   arr.sort((a, b) => a - b);
   let count = 0;
   for (let i = 1; i < arr.length; i++) {
      if (arr[i] <= arr[i - 1]) {
         const temp = arr[i]
         arr[i] = arr[i - 1] + 1
         count += arr[i] - temp
      };
   };
   return count;
};
console.log(makeUnique(arr));

输出

控制台中的输出将是 −

1

相关文章