javascript数组有没有indexOf方法

JavaScript018

javascript数组有没有indexOf方法,第1张

在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)) // 自定义排序

1.js的indexOf()方法

var arr_data = [1,2,3]

arr_data.indexOf(1)//如果存在返回值的下标,不存在返回-1

2.jquery的$.inArray()方法

$.inArray(1, arr_data)//如果存在返回值的下标,不存在返回-1

3.arr.find()

数组实例的find()用于找出第一个符合条件的数组元素。它的参数是一个回调函数,所有的数组元素依次遍历该回调函数,直到找出第一个返回值为true的元素,然后返回该元素,否则返回undefined。

注意:find()对于空数组,函数是不会执行的。find()并没有改变数组的原始值

4.arr.findIndex()返回第一个符合条件的数组元素的位置,如果所有的元素都不符合条件,则返回-1.

注意:find(),findIndex()弥补了index的不足:(即判断NAN)

[NaN].indexOf(NaN) // -1

[NaN].findIndex(y =>Object.is(NaN, y))

5.最常见的就是 for和if 的组合

注意: 这里forEach return false 是阻止不了循环的行为;