const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN]
console.log(arr1.includes('c')) //true
console.log(arr1.includes('z')) //false
console.log(arr1.includes(NaN)) //true
Array.includes()函数的第二个参数fromIndex 表示判断的起始位置,可以是正数也可以是负数
console.log(arr1.includes('d', 1)) true
console.log(arr1.includes('d', 3)) true
console.log(arr1.includes('d', 4)) false
负数表示从右过来第几个,但是不改变判断搜索方向,搜索方向还是从左到右
//如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。
// 数组长度是3
// fromIndex 是 -100
// computed index 是 3 + (-100) = -97
console.log(arr1.includes('k', -1)) //false
console.log(arr1.includes('k', -2)) //true
console.log(arr1.includes('i', -3)) // false
Array.indexOf(item,start)方法
Array.indexOf(item,start)方法可返回数组中某个指定的元素位置。如果在数组中没找到指定元素则返回 -1。
参数item 必须。查找的元素。参数start 可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。
如省略该参数,则将从字符串的首字符开始检索。
返回值 Number类型, 元素在数组中的位置,没有就返回-1
Array.includes()与Array.indexOf()的区别
他们都是判断是否包含某一元素,
Array.indexOf()第一个是它会返回-1和元素的位置来表示是否包含,在定位方面是没问题,就是不够语义化。
第二是不能判断是否有NaN的元素。console.log(arr1.indexOf(NaN)) -1
Array.includes()除了不能定位外,解决了indexOf的上述的两个问题。它直接返回true或者false表示是否包含元素,对NaN一样能有有效
应用实例:Array.includes()
const srcore = [{id: 1, num: 186, province_name: "广东"},
{id: 6, num: 11, province_name: "河南"},
{id: 14, num: 36, province_name: "甘肃"}]
score.forEach((data,index) => {
Object.keys(data).forEach(key => {
if(['num','province_name'].includes(key)) {
option.push({
injectType:'text',
text:(key==='num'?data[key]+'人':data[key]),
x:(key==='province_name'?110:525),
y:1315+index*115,
style:{
fontSize:38,
color:'#260680'
}
})
}
})
})
1,传入对象,返回属性名
var obj = {'a':'123','b':'345','c':'678'};
console.log(Object.keys(obj)); //['a','b']
2,传入的字符串,返回其索引
var str = ‘ad2345';
console.log(Object.keys(str)); //[0,1,2,3,4,5]
3,构造函数 返回空数组或者属性名
数组返回索引
var arr = ["a","b","c"];
console.log(Object.keys(arr)); //["0","1","2"]