数组方法实现(八)————数组方法indexOf()
来源:互联网 发布:iphone 投影到mac 编辑:程序博客网 时间:2024/06/05 08:47
indexOf()、lastIndexOf()方法
相同点:
都接收两个参数————要查找的项、要查找起点位置是索引(可选)
不同点:查找方式
indexOf():从数组的开头(位置0)向后查找
lastIndexOf():从数组末尾向前查找
下面仅以indexOf()为例(lastIndexOf()类似),如下:
var str = 'hellohelloworlda';var substr1 = 'a';var substr2 = 'll';var substr3 = 'rld';var substr4 = 'lohe';var substr5 = 'hello';var substr6 = 'llowor';var substr7 = 'zhello';var substr8 = 'llo';console.log('str的长度是:' + str.length + ' ' + '子串substr1位置是:' + searchStr(str, substr1, 1)); //str的长度是:16 子串substr1位置是:15console.log('str的长度是:' + str.length + ' ' + '子串substr2位置是:' + searchStr(str, substr2, 2)); //str的长度是:16 子串substr2位置是:2console.log('str的长度是:' + str.length + ' ' + '子串substr2位置是:' + searchStr(str, substr2, 5)); //str的长度是:16 子串substr2位置是:7console.log('str的长度是:' + str.length + ' ' + '子串substr3位置是:' + searchStr(str, substr3, 1)); //str的长度是:16 子串substr3位置是:12console.log('str的长度是:' + str.length + ' ' + '子串substr4位置是:' + searchStr(str, substr4, 1)); //str的长度是:16 子串substr4位置是:3console.log('str的长度是:' + str.length + ' ' + '子串substr5位置是:' + searchStr(str, substr5, 1)); //str的长度是:16 子串substr5位置是:5console.log('str的长度是:' + str.length + ' ' + '子串substr5位置是:' + searchStr(str, substr5, 7)); //str的长度是:16 子串substr5位置是:-1console.log('str的长度是:' + str.length + ' ' + '子串substr6位置是:' + searchStr(str, substr6, 1)); //str的长度是:16 子串substr6位置是:7console.log('str的长度是:' + str.length + ' ' + '子串substr7位置是:' + searchStr(str, substr7, 1)); //str的长度是:16 子串substr7位置是:-1//两个参数console.log('str的长度是:' + str.length + ' ' + '子串substr5位置是:' + searchStr(str, substr5)); //str的长度是:16 子串substr5位置是:0console.log('str的长度是:' + str.length + ' ' + '子串substr6位置是:' + searchStr(str, substr6)); //str的长度是:16 子串substr6位置是:7console.log('str的长度是:' + str.length + ' ' + '子串substr8位置是:' + searchStr(str, substr8)); //str的长度是:16 子串substr8位置是:2console.log('str的长度是:' + str.length + ' ' + '子串substr8位置是:' + searchStr(str, substr8, 3)); //str的长度是:16 子串substr8位置是:7function searchStr(str, substr, index) { var result; var arr = []; var len1 = str.length; var len2 = substr.length; var i = index; if(len1 < len2) { //子字符串长度大于要比较的字符串长度 return; } if(arguments.length == 3) { //参数个数三个的时候 compare(arguments[2]); } else if(arguments.length == 2) { //参数个数两个的时候 compare(0); } //比较函数 function compare(index) { for(i = index; i < len1; i++) { if(len2 == 1) { //字符串长度为1时 if(str.charAt(i) == substr.charAt(0)) { // result = i; arr.push(i); break; } } if(substr.charAt(0) == str.charAt(i)) { //字符串长度两个或两个以上时 for(var j = 1; j < len2; j++) { // console.log('i的值是:' + i + ' ' + 'j的值是:' + j + ' ' + 'j+i的值是:' + (j+i) + ' ' + substr.charAt(j) + ' ' + str.charAt(j + i)); //测试代码 if(substr.charAt(j) !== str.charAt(j + i)) { break; } if( j == len2 - 1) { arr.push(i); } } } else { // console.log('i的值是:' + i + ': ' + str.charAt(i)); //测试代码 continue; } } } return result = (arr[0] >=0) ? arr[0] : -1;}
阅读全文
0 0
- 数组方法实现(八)————数组方法indexOf()
- JS数组中的indexOf方法
- JS数组中的indexOf方法
- 封装数组的indexOf方法
- 数组 — 方法
- 数组方法实现(一)————数组方法join()
- 数组方法实现(二)————数组方法push()、pop()
- 数组方法实现(三)————数组方法shift()
- 数组方法实现(四)————数组方法unshift()
- 数组方法实现(五)————数组方法reverse()
- 数组方法实现(五)————数组方法concat()
- 数组方法实现(六)————数组方法slice()
- 数组方法实现(七)————数组方法splice()
- 实现indexof()方法
- ie不支持数组的indexOf()方法的解决方法
- javascript中的数组有indexOf方法吗?
- 数组新方法indexOf 方法的重写
- 解决IE8不支持数组的indexOf方法
- R语言处理气象数据:NetCDF格式数据的读写
- Java并发编程--Volatile详解
- 后台截图(二)
- Vue2.0+ElementUI实现表格翻页
- 后台截图(三)
- 数组方法实现(八)————数组方法indexOf()
- 基于R语言的Kaggle案例分析学习笔记(八)
- hge 抗锯齿(一)
- JAVA final关键字
- Andorid NoHttp简单使用
- hge 抗锯齿(二)
- java多线程
- 171021—用do...while和if完成素数完全分解。
- Spring系列——使用JPA来操作数据