Array对象的方法实现(6)----Array.prototype.indexOf(实现常规参数的功能)
2017-09-01 16:38
549 查看
11,Array的indexOf方法
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
语法:arr.indexOf(searchElement[, fromIndex = 0])
注意:1,返回找到的索引或者不存在的-1。2,不改变原数组
Array.prototype._indexOf = function(){
if(this === null){throw new TypeError('"this" is null or not defined');}
let that = Object(this),len = that.length >>> 0,param = arguments;
if(param[1] && Math.abs(param[1])>= len)return -1;
startIndex = Math.max((param[1] ? param[1] : 0), 0) ;
while(startIndex < len){
if(startIndex in that && param[0] === that[startIndex])return startIndex;
startIndex++;
}
return -1;
}测试1:只有一个参数
let a = [2, 9, 7, 8, 9];
console.log(a._indexOf(2)); // 0
console.log(a._indexOf(6)); // -1
console.log(a._indexOf(7)); // 2
console.log(a._indexOf(8)); // 3
console.log(a._indexOf(9)); // 1
测试2:两个参数
let array = [2, 5, 9];
console.log(array._indexOf(2, -1)); // -1
console.log(array._indexOf(2, -3));// 0测试3:找出指定元素出现的所有位置
var indices = [];
var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var element = 'a';
var idx = array._indexOf(element);
while (idx != -1) {
indices.push(idx);
idx = array._indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
语法:arr.indexOf(searchElement[, fromIndex = 0])
注意:1,返回找到的索引或者不存在的-1。2,不改变原数组
Array.prototype._indexOf = function(){
if(this === null){throw new TypeError('"this" is null or not defined');}
let that = Object(this),len = that.length >>> 0,param = arguments;
if(param[1] && Math.abs(param[1])>= len)return -1;
startIndex = Math.max((param[1] ? param[1] : 0), 0) ;
while(startIndex < len){
if(startIndex in that && param[0] === that[startIndex])return startIndex;
startIndex++;
}
return -1;
}测试1:只有一个参数
let a = [2, 9, 7, 8, 9];
console.log(a._indexOf(2)); // 0
console.log(a._indexOf(6)); // -1
console.log(a._indexOf(7)); // 2
console.log(a._indexOf(8)); // 3
console.log(a._indexOf(9)); // 1
测试2:两个参数
let array = [2, 5, 9];
console.log(array._indexOf(2, -1)); // -1
console.log(array._indexOf(2, -3));// 0测试3:找出指定元素出现的所有位置
var indices = [];
var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var element = 'a';
var idx = array._indexOf(element);
while (idx != -1) {
indices.push(idx);
idx = array._indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]
相关文章推荐
- Array对象的方法实现(2)----Array.prototype.every和Array.prototype.fill(实现常规参数的功能)
- Array对象的方法实现(1)----Array.prototype.push和Array.prototype.concat(实现常规参数的功能)
- Array对象的方法实现(5)----Array.prototype.includes(实现常规参数的功能)
- map方法学习,封装函数--实现Array.prototype.map()的功能
- 参数实现Oracle SQL中实现indexOf和lastIndexOf功能
- 关于面试题 Array.indexof() 方法的实现及思考
- Javascript中prototype属性实现给内置对象添加新的方法
- js使用Array.prototype.sort()对数组对象排序的方法
- JavaScript实现网页对象拖放功能的方法
- Oracle SQL中实现indexOf和lastIndexOf功能
- js使用Array.prototype.sort()对数组对象排序的方法
- 为JS扩展Array.prototype.indexOf引发的问题探讨及解决
- 为JS扩展Array.prototype.indexOf引发的问题探讨及解决
- JS自定义对象实现Java中Map对象功能的方法
- 请借助Array内置对象的相关方法,实现字符串倒序排列
- 使用SQL字符串反转函数REVERSE巧妙实现lastindexof功能
- iOS 混合应用的关键点分析 - 仿 Android 平台 WebView 可注入本地对象方法的功能实现要点
- 为JS扩展Array.prototype.indexOf引发的问题及解决办法
- javascript中数组Array对象调用不同的方法可以实现几种数据结构
- js中setTimeout方法重写,实现对象参数传递