pull函数
我的写法
function pull(array, ...values) {
let result = []
console.log(values)
outer:
for(val of array) {
for(let oldVal of values) {
if (val == oldVal) {
continue outer
}
}
result.push(val)
}
return result
}
我这个没有改变原数组哈。。。
别人的写法
function basePullAll(array, values, iteratee, comparator) {
const indexOf = (array, value, fromIndex) =>{
let index = fromIndex - 1
const { length } = array
while (++index < length) {
if (array[index] === value) {
return index
}
}
return -1
}
const length = values.length
let index = -1
let seen = array
while (++index < length) {
let fromIndex = 0
const computed = values[index]
while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
array.splice(fromIndex, 1)
}
}
return array
}
感想
- 剩余参数 用于不定数量的参数十分有用.
- 在js中,object和array传入function时,传入的是引用。所以对array进行push/pull/splice的操作,会影响到原数组。js中function的形参
- 我唯一不能理解的是在lodash中有这种代码
value === value
为啥?
网友评论