一些常用函数的简单实现

2 分钟阅读

最近在牛客网刷了一些题,通过这些题目也对自己的js进行了一定的复习,接下来给大家奉上我的一些函数的简单实现,希望可以对大家有所帮助。也当作给自己做一个简单的笔记。
P.S.:由于牛客网不支持箭头函数语法,所以所有函数的实现都是通过ES5标准的。使用了部分ES6API。

查找元素在数组中的位置

text
function indexOf(arr, item) {
  return arr.indexOf(item)
}

数组求和

text
function sum(arr) {
   return arr.reduce(function(prev,next){
       return prev+next
   },0)
}

移除数组内的指定项

text
function remove(arr, item) {
  var newArr = arr.filter(function(t){
  return t !== item;
})
return newArr
}
//第一种实现,借用filter方法过滤掉指定项
function remove(arr, item) {
  var newArr = [];
  arr.forEach(function(t){
    if(t!==item){
    newArr.push(t)
  }
})
return newArr;
}
//正常的数组遍历方法,还有很多实现方法这里就不赘述了,大家自行发散思维

统计某一项出现的次数

text
function count(arr, item) {
  return arr.reduce(function (prev, cur) {
    return cur === item ? prev + 1 : prev
  }, 0)
}
//这个算是运用了一下reduce方法的奇淫技巧,用来统计也是棒棒哒

找出数组中重复的项

text
function duplicates(arr) {
  var duplicatesArr = [];
  arr.forEach(function (t) {
    if (arr.indexOf(t) !== arr.lastIndexOf(t) && duplicatesArr.indexOf(t) === -1) {
      duplicatesArr.push(t);
    }
  })
  return duplicatesArr;
}
//思路为如果正向查找和反向查找index不同,这个项就重复过。

找出某项在数组中出现的所有位置

text
function findAllOccurrences (arr, target) {
  var ret = []
  arr.forEach(function (t, i) {
    if (t === target) {
      ret.push(i)
    }
  })
  return ret
}
相关文章