工具函数之insertArray函数
目的是为了处理这样一个需求:一个显示历史搜索的组件,显示最大条数为15条的历史信息,每次搜索后,将搜索的key显示在第一条,若该key之前被搜索过,则移除之前的key,将本次的添加到第一条。
insertArray实现
function insertArray(arr, val, compare, maxLen) {
const index = arr.findIndex(compare)
if (index === 0) {
return
}
if (index > 0) {
arr.splice(index, 1)
}
arr.unshift(val)
if (maxLen && arr.length > maxLen) {
arr.pop()
}
}
函数接收4个参数:
- arr:被操作的数组
- val:被比较的值
- compare:一个执行比较规则的函数
- maxLen:规定数组的最大长度
该函数首先会根据compare函数来获取元素的索引,一般(item) => {return item === val}
,当index === 0
,也就是说该元素就是arr中的第一条时,直接return;当元素存在且不是第一条时,将元素从数组中移除,并将val移动到数组首位;当存在长度限制且数组长度大于限制长度时,将数组最后的元素移除。
作者:hayato
文章版权:本站所有文章版权依赖于 CC BY-NC-SA 3.0 Unported License
本文链接:https://blog.axis-studio.org/2017/10/31/工具函数之insertArray函数/