fromPairs
功能:將數組解析成對象。
@pairs: 需要解析的鍵值對數組
@result: 返回的對象
function fromPairs(pairs) {
var index = -1,
length = pairs == null ? 0 : pairs.length,
result = {};
// 遍歷數組,對象賦值
while (++index < length) {
var pair = pairs[index];
result[pair[0]] = pair[1];
}
return result;
}
indexOf
功能:從指定位置(fromIndex,默認為0)開始查詢數組array
中第一個值為value
的元素,返回該元素下標。
function indexOf(array, value, fromIndex) {
const length = array == null ? 0 : array.length
if (!length) {
return -1
}
let index = fromIndex == null ? 0 : +fromIndex
// 確定起始位置,并對位置進行判斷
if (index < 0) {
index = Math.max(length + index, 0)
}
// 核心查詢方法
return baseIndexOf(array, value, index)
}
// baseIndexOf
function baseIndexOf(array, value, fromIndex) {
// 根據類型的不同,執行不同的查找方法,但是核心查找方法都是遍歷比較
return value === value
? strictIndexOf(array, value, fromIndex)
: baseFindIndex(array, baseIsNaN, fromIndex)
}
// strictIndexOf
function strictIndexOf(array, value, fromIndex) {
let index = fromIndex - 1
const { length } = array
while (++index < length) {
if (array[index] === value) {
return index
}
}
return -1
}
// baseFindIndex類似,不同之處在于將判斷相等變成了謂詞判定
initial
功能:返回數組除最后一個之外的所有元素。
方法:slice切割。
function initial(array) {
const length = array == null ? 0 : array.length
return length ? slice(array, 0, -1) : []
}