Lodash中文官网https://www.lodashjs.com/
1、_.findIndex与_.find
_.find返回数组中某个符合条件的第一个值
_.find(function(currentValue, [index], [arr]),[thisValue])
参数:
function(currentValue, index, arr):每个元素需要执行的函数
currentValue:当前元素
[index]: 当前元素索引值
[arr]: 当前元素所属的数组对象
[thisValue]: 传递给函数的值
返回值:
返回符合条件的第一个元素的值,否则返回undefined
示例
let arr = [0,1,3,-5,7,10]
console.log(arr.find((n) => n < 0))
// 打印结果:-5
仿写原理
let arr = [0,1,3,-5,7,10]
function res() {
// 循环每一个元素执行一遍方法
for(let i=0; i<arr.length; i++) {
// 符合条件,则返回该元素
if (arr[i] >100) {
return arr[i]
}
}
}
console.log(res())
// 打印结果: undefined
_.findIndex返回数组中某个符合条件的第一个索引值
_.findIndex(array, [predicate=_.identity], [fromIndex=0])
参数:
array : 要搜索的数组。
[predicate=_.identity] : 这个函数会在每一次迭代调用。
[fromIndex=0] : 搜索的索引。
返回值:
(number): 返回找到元素的索引值(index),否则返回 -1。
示例
let arr = [0,1,3,-5,7,10]
console.log(arr.findIndex((n) => n < 0))
// 打印结果:3
仿写原理
let arr = [0,1,3,-5,7,10]
function res() {
// 循环每一个元素执行一遍方法
for(let i=0; i<arr.length; i++) {
// 符合条件,返回元素的索引值
if (arr[i] >100) {
return i
}
}
}
console.log(res())
// 打印结果: -1
2、_.startsWith
_.startsWith检查字符是否以某开头
_.startsWith([string=''], [target], [position=0])
参数:
[string=‘’] (string): 要检索的字符串。
[target] (string): 要检查的字符串。
[position=0] (number): 检索的位置。
返回值:
(boolean): 如果string以 target,那么返回true,否则返回 false 。
示例:
_.startsWith('abc', 'b', 1)
console.log('abc'.startsWith( 'b', 1))
// 打印结果:true
仿写原理:
let string = 'abc'
function res(target, position) {
// 字符串每一个循环执行
for(let i=0; i<string.length; i++) {
if(string[i] == target) {
if(!position) {
return true
} else {
if(i == Number(position)) {
return true
} else {
return false
}
} else { // 如果不存在符合的
return false
}
}
}
}
2、indexOf()
返回某个指定的字符串值在字符串中首次出现的位置
string.indexOf(searchvalue,[start])
参数:
searchvalue:规定需要检索的字符串值
[start]:开始检索的字符串位置,默认为0
返回值:
Number:查找指定字符串第一次出现的位置,如果没找到匹配的字符串则返回 -1。
示例:
var str="Hello world, welcome to the universe.";
var n=str.indexOf("e");
console.log(n)
// 打印结果: 1
仿写原理:
// 1------------------------------------切割比较
/**
* 循环字符串,并按照匹配字符串的数量切割,比较切割后的字符串和匹配字符串
* @type {string}
* @param {string} string 原始字符串
* @param {string} searchString 匹配字符串
* @param {number} start 匹配的起始位置,默认为0
*/
let str = 'abc hello world he is a good man';
console.log(_indexOf(str, 'he'))
function _indexOf(string, searchString, start) {
// 返回的下标
let index = -1
// 记录开始位置,如果开始位置大于原始字符串则必定不会存在
if (start && Number(start) > string.length){
return index
}
for (let i= start ? Number(start) : 0; i<string.length; i++) {
if (string.substr(i, searchString.length) === searchString) {
index = i
break
}
}
return index
}
// 2------------------------------------循环比较