首页 > 语言 > JavaScript > 正文

怎样使你的 JavaScript 代码简单易读(推荐)

2024-05-06 15:40:30
字体:
来源:转载
供稿:网友

让我们先从怎样删除数组中的重复项这个简单问题开始。

复杂 - 使用 forEach 删除重复项

首先,我们新创建一个空数组,用 forEach() 在数组的每个元素上执行一次提供的函数。最后检查新数组中是否存在该值,如果不存在,则添加它。

function removeDuplicates(arr) {   const uniqueVals = [];    arr.forEach((value,index) => {       if(uniqueVals.indexOf(value) === -1) {      uniqueVals.push(value);    }   }); return uniqueVals;}

简单 - 使用 filter 删除重复项

用 filter 方法创建一个包含所有元素的新数组,通过提供的函数进行测试。基本上我们只需要迭代数组,并检查当前元素在数组中出现的第一个位置是否和当前位置相同。当然,这两个位置对于重复元素来说是不同的。

function removeDuplicates(arr) { return arr.filter((item, pos) => arr.indexOf(item) === pos)}

简单 - 使用 Set 删除重复项

ES6 提供了 Set 对象,这使事情变得更加容易。 Set 仅允许存在唯一值,所以当你传入数组时,它会自动删除重复的值。
但是,如果你需要一个包含唯一元素的数组,为什么不一开始就用 Set 呢?

 

function removeDuplicates(arr) {  return [...new Set(arr)];}

 接下来让我们解决第二个问题:写一个函数,向该函数传入一组非负整数,其中的值各不不同,要求使它们连续,并返回缺失的数字个数。

对于const arr = [4,2,6,8],输出应为

countMissingNumbers(arr)= 3

你可以看到 3,5 和 7 是缺失的。

复杂 - 使用 sort 和 for 循环解决

要获得最小和最大的数字,我们需要用用 sort方法按升序进行排序来达到这个目的,然后从最小的数字循环到最大的数字。每次检查数组中是否存在应该出现的序号,如果不存在,就对计数器加一。

function countMissingNumbers(arr) {  arr.sort((a,b) => a-b);    let count = 0;    const min = arr[0];    const max = arr[arr.length-1];  for (i = min; i<max; i++) {   if (arr.indexOf(i) === -1) {     count++;        }     }      return count;}

简单 - 使用 Math.max 和 Math.min 求解

这个解决方案有一个简单的解释:Math.max()函数返回数组中最大的数字,而Math.min() 返回数组中最小的数字。

首先,如果没有丢失数字,我们能知道数组中有多少个数字。所以可以用以下公式 maxNumber - minNuber + 1,并用这个结果减去数组长度,得到的差就是缺失数字的个数。

function countMissingNumbers(arr) {   return Math.max(...arr) - Math.min(...arr) + 1 - arr.length;}

最后一个问题是检查字符串是否为回文。所谓 回文 是一个从左到右和从右到左读起来都一样的字符串。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选