js中实现数组的indexOf方法

时间过得很快,转行做开发整一年了,打算出去见见世面。看我现在技术水平能达到什么层次,好确定以后的学习方向,也看看外面的公司都在使用一些什么样的技术。

昨天面了一家公司,对方直接让我答的压轴题。一个简单的算法设计题:熟悉js的同学知道js中字符串有个indexOf方法,现在需要实现数组的indexOf方法。由于本科并非计算机专业,编程方面的一些基本功还很不扎实(比如基础算法掌握程度、算法设计能力),昨天没把题目做对。今天赶紧写出来,以免以后遇上还得再去想。罗里吧嗦一顿,上代码吧还是:

 1 Array.prototype.indexOf = function(b) {
 2         //参数校验
 3         if (Object.prototype.toString.call(b) !== ‘[object Array]‘) return new Error(‘array expected‘);
 4         //b的长度比本数组长度长了就直接返回
 5         if (this.length < b.length) return -1;
 6
 7         var index = 0, //本数组游标
 8             i = 0,
 9             len = b.length;
10         while (index < this.length) {
11             if (this.length - index < b.length) return -1;
12             for (i = 0; i < len; ++i) {
13                 if (this[index + i] !== b[i]) break;
14             }
15             if (i === b.length) return index;
16             index++;
17         }
18     }
时间: 2024-10-18 13:07:05

js中实现数组的indexOf方法的相关文章

Javascript中的数组去重-indexof方法

在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. 1 var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1]; 2 var arr2 = []; 3 for(var i = 0;i < arr.length;i++){ 4 if(arr2.indexOf(arr[i]) == -1){ 5 arr2.push(arr[i]) 6 } 7 } 8 console.log(arr2) //[1,2,3,

关于js中操作数组的一些方法

1.锁定数组的长度(让数组的长度变成只读). var a = [1,2,3] //定义一个数组 Object.defineProperty(a,"length",{ writable:false }) //将a数组的长度属性设为只读 a.length = 0 //将a的长度改为0 console.log(a.length); //打印a数组的长度,还是3 2.Array.join()方法,返回一个字符串 var a = [1,2,3]; var b = a.join("&qu

js中的数组对象排序(方法sort()详细介绍)

定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意,数组在原数组上进行排序,不生成副本. 普通数组排序: js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: 字母A.B的ASCII值分别为65.66,而a.b的值分别为97.98,所

js中操作数组的一些方法

增 push   在数组的末尾添加一个或多个元素,并返回新的长度.  array.push(1,2,3.........) unshift  在数组的开头添加一个或多个元素,并返回新的长度. array.unshift(1,2,3......) splice 在制定位置添加一个活多个元素,splice(start,0,str)  start必选, 删 pop   删除并返回数组最后一个元素 shift  删除并返回数组第一个元素 splice  删除数组中的元素,然后返回被删除的项目  spli

js中操作数组的一些方法【转】

增 push   在数组的末尾添加一个或多个元素,并返回新的长度.  array.push(1,2,3.........) unshift  在数组的开头添加一个或多个元素,并返回新的长度. array.unshift(1,2,3......) splice 在制定位置添加一个活多个元素,splice(start,0,str)  start必选, 删 pop   删除并返回数组最后一个元素 shift  删除并返回数组第一个元素 splice  删除数组中的元素,然后返回被删除的项目  spli

Js中去除数组中重复元素的4种方法

今天工作遇到此问题,尝试多个方法不尽人意,故此写个博客来总结一下如何在js中去除重复元素. 方法1:         Array.prototype.method1 = function(){             var arr[];    //定义一个临时数组             for(var i = 0; i < this.length; i++){    //循环遍历当前数组                 //判断当前数组下标为i的元素是否已经保存到临时数组          

js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf = function (e) { for (var i = 0, j; j = this[i]; i++) { if (j.indexOf(e) != -1) { return i; } } return -1; } if (anSwerIdValue.length < 14) { alert(&quo

字符串方法,js中的数组方法,ES5新增的数组方法,以及jQuery中的数组方法

说明:本片主要对比介绍与数组操作相关的方法 (一)字符串方法(String对象方法) indexOf() //检索字符串 lastIndexOf() //从后向前搜索字符串 match() //找到一个或多个正则表达式的匹配 replace() //替换与正则表达式匹配的子串 search() //检索与正则表达式相匹配的值 slice() //提取字符串的片断,并在新的字符串中返回被提取的部分 split() //把字符串分割为字符串数组 substr() //从起始索引号提取字符串中指定数目

JS中申明数组的三种方法

JS中的数组对象可以存放的元素非常丰富,包括number.String等基本的数据类型以及object对象还有数组类型,他们都可以构成数组元素的一部分. 方法1: var a = new array(); a[0] = "1";//String类型 a[1] = 2;//number类型 a[2] = { x:1, y:3};//object对象作为数组的元素 //方法2: var  a  =  new array("1" , 2 , {x:1,y:3} ); //