jsindexof的简单介绍

http://www.itjxue.com  2023-01-07 21:20  来源:未知  点击次数: 

js indexof是什么?

indexOf()方法 返回根据给定元素找到的第一个索引值,否则返回-1。

(实战帮有javascript课程与实训项目哦,可以一试)

语法:arr.indexOf(searchElement[, fromIndex = 0])

参数:

searchElement

位于数组中的元素。

fromIndex

默认值: 0 (即在整个数组中查找指定元素)

javascript数组有没有indexOf方法

在js最新标准ECMA5中数组是支持的indexOf方法的(目前的主流浏览器均支持ECMA5)

ECMA5新增的方法:

/**

?*?ECMA5数组新增方法

?*/

//?1.indexOf?比较的是?'==='

// var?arr?=?[1,?2,?3,?4,?5,?4,?3,?2,?1];

// //?一个参数:?返回3在数组arr的索引

// var?index1?=?arr.indexOf(3);

// alert(index1);?//?2

// //?两个参数:?从第5个位置查找3,?返回3在arr的索引

// var?index2?=?arr.indexOf(3,?5);

// alert(index2);?//?6

//?2.lastIndexOf?(从后面查找)

//?3.五个迭代方法(不改变原数组)

// var?arr2?=?[1,?2,?3,?4,?5,?4,?3,?2,?1];

//?3.1.every对数组的每一元素,调用回调函数运行,?如果回调函数都返回true,结果返回true;?如果回调函数有一个返回false,?返回false

//?当every回调函数返回false时,?函数直接返回

// var?r1?=?arr2.every(function(item,?index,?array)?{

// document.write(item);

// return?item??2;

// });

// alert(r1);

// alert(arr2);

//?3.2.filter对于数组的每一个元素,?调用回调函数进行过滤,?返回过滤后的结果

// var?r2?=?arr2.filter(function(item,?index,?array)?{

// return?item??3;

// });

// alert(r2);

//?3.3.foreach对于数组的每一个元素,?调用回调函数(没有返回值)

// var?r3?=?arr2.forEach(function(item,?index,?array)?{

// document.write(item);

// });

// alert(r3);?//?undefined

//?3.4.map对于数组的每一个元素,?调用回调函数,?返回一个新数组

// var?r4?=?arr2.map(function(item,?index,?array)?{

// return?item*2;

// });

// alert(r4);

// alert(arr2);

//?3.5.some对数组的每一元素,调用回调函数运行,?如果回调函数任意一个返回true,结果返回true;?如果回调函数都返回false,?返回false

//??当some回调函数返回true时,?函数直接返回

// var?r5?=?arr2.some(function(item,?index,?array)?{

// document.write(item);

// return?item??2;

// });

// alert(r5);

// alert(arr2);

//4.reduce,?reduceRight?(遍历的起始位置不同)

// var?arr3?=?[1,?2,?3,?4,?5,?4,?3,?2,?1];

// //?prev:?前一个值

// //?cur:?当前值

// var?r6?=?arr3.reduce(function(prev,?cur,?index,?array)?{

// return?prev?+?cur;?

// });

// alert(r6);?//?求数组和

var?arr3?=?[1,?2,?3,?4,?5,?4,?3,?2,?1];

var?r7?=?arr3.reduceRight(function(prev,?cur,?index,?array)?{

return?prev?+?cur;?

});

alert(r7);?//?求数组和

数组其他方法:

/**

*?js中的数组类似与java中的map,?长度可任意改变,?元素类型任意

?*/

//?一.创建数组

//?方法1.

// var?arr1?=?new?Array();

// //?方法2.

// var?arr2?=?[1,?2.2,?true,?"hello"];

// alert(arr2.length);

// arr2.length?=?3;?//?小于实际长度,?会进行截断;?大于实际长度,?arr2[length-1]返回的是undefined

// alert(arr2);?//?隐式的调用了arr2.toString()方法

//?二.数组常用方法

//?1.pop?,?push

// var?arr3?=?[];

// arr3.push(1);

// arr3.push(2,?3);?//?可以推入多个值,?返回数组的长度

// alert(arr3.push(4,?5));?//?返回数组的长度?5

// alert(arr3);

// arr3.pop();?//?从数组的尾部移除一个元素,?返回移除的元素

// alert(arr3.pop());?//?返回移除的元素?4

// alert(arr3);

//?2.shitf,?unshitf

// var?arr4?=?[1,?2,?3,?4,?5];

// alert(arr4.shift());?//?从数组首部移除元素,?返回移除的元素

// alert(arr4);

// arr4.unshift("a");?//?从头部插入元素,?返回数组的长度

// alert(arr4.unshift("b",?"c"));?//?返回数组的长度?7

// alert(arr4);

//?3.?splice,?slice?

/**

?*?splice:?改变数组本身

?*?slice:?不改变数组

?*/

// var?arr5?=?[1,?2,?3,?4,?5];

// //?splice:?

// //????????第一个参数:?表示从哪个位置进行删除

// //????????第二个参数:?表示删除的个数

// //????????第三个参数及以后:?表示从截取的位置插入的元素

//??????????//????????返回值:?原数组被删除的元素

// var?r?=?arr5.splice(1,?2,?3,?4,?5);?//?splice(1)==?1?|?splice(1,?2)==?1,?4,?5

// alert(r);?//?被删除的元素

// alert(arr5);?//?1,?3,?4,?5,?4,?5

// var?arr6?=?[1,?2,?3,?4,?5];

// var?r2?=?arr6.slice(2,?4);?//?左闭右开区间,?返回被截取的元素

// alert(r2);?//?3,?4

// alert(arr6);?//?1,?2,?3,?4,?5?

//4.?contact,?join

/**

?*?contact?和?join?均不改变数组本身

?*?

?*/

// var?arr7?=?[1,?2,?3];

// var?arr8?=?[4,?5,?6,?7];

// var?r3?=?arr7.concat(arr8);

// alert("arr7:?"?+?arr7);

// alert("arr8:?"?+?arr8);

// alert("concat:?"?+?r3);

// var?r4?=?arr7.join("-");?//?每个元素间加-,?返回的是一个字符串

// alert("arr7:?"?+?arr7);

// alert("join:?"?+?r4);

//?5.?sort,?reverse

/**

?*?sort,?reverse均改变数组本身

?*?sort:?默认将每个元素变为字符串,进行比较

?*/

// var?arr9?=?[8,?4,?3,?9,?5,?9,?0,?1,?10,?true];

// var?r5?=?arr9.sort();?//?正序排序,?返回排序后的数组

// alert(r5);?//?返回排序后的数组

// alert(arr9);?//?数组的序列已经被改变(正序)

//

// arr9?=?[8,?4,?3,?9,?5,?9,?0,?1];?

// var?r6?=?arr9.reverse();?//?逆序输出,?返回逆序的数组

// alert(r6);?//?返回逆序的数组

// alert(arr9);?//?数组元素已经被改变

var?arr?=?[8,?4,?3,?9,?5,?9,?10,?1];?

function?compare(v1,?v2)?{

if?(v1??v2)

return?1;

else?if?(v1??v2)

return?-1;

else

return?0;

}

alert(arr.sort());?//?转换为字符串排序

alert(arr.sort(compare));?//?自定义排序

Js基础-indexOf()方法的使用

indexOf()只返回字符串在规定的查找顺序中,首次出现的位置

工作中应用 = 如果要检索的字符串值没有出现,则该方法返回 -1

找数组中的元素 也可以使用es6的find()方法

非要对 number 类型使用 indexOf 方法嘞?那就转换成字符串咯,接着上例来写

findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。

findIndex() 方法为数组中的每个元素都调用一次函数执行:

当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。

如果没有符合条件的元素返回 -1

注意: findIndex() 对于空数组,函数是不会执行的。

注意: findIndex() 并没有改变数组的原始值。

参考这篇文章

indexOf() 方法可返回数组中某个指定的元素位置。

该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。

如果在数组中没找到指定元素则返回 -1。

对比:

1、findIndex()和indexOf方法实现都是通过循环遍历查找。

2、findIndex()的应用场景要比indexOf广泛一些,可以查找大于等于小于,表达式可以随便写,indexOf就只能在第一层查找相等的值。

3、findIndex()实际上相当于一个for循环,只不过找到了你不需要自己退出。

js中使用indexOf()方法是提示(对象不支持此属性或方法)如何解决?

js中使用indexOf()方法是提示(对象不支持此属性或方法)解决办法:

“对象不支持此属性或方法” 表示 javascript对象没有这个方法,无法调用,比如

A.B() 当A对象没有B方法的时候,会报这个异常。

因为javascript是脚本语言,解释执行,所以只有在执行的过程中才会报错,而编译语言,像java,c等在编译的时候就会报错。

A.indexOf() 在原生JS中只能用于String对象,比如var s=“123”; alert(s.indexOf("1")) // 不会报错

var s=123; alert(s.indexOf("1")) // 报错,因为s是number,这时候你需要把s转换成string才可以运行。

如以上回答未解决问题,请尝试:

var parr = ["a","b","c","d"];

判断parr 数组中是否存在a

parr.indexOf("a")==-1 在ie8下会提示对象不支持indexOf属性或方法

解决办法:

用jquery里的$.inArray替代indexOf

$.inArray(“a”, parr)==-1

(责任编辑:IT教学网)

更多