includes()
includes和indexOf类似,都可以用来判断一个数组是否包含一个指定的值。不同的是:indexOf会返回一个元素在数组中的位置,如果没有找到该元素则返回-1;includes则返回true或false。
let arr = ["react", "angular", "vue"];
console.log(arr.indexOf("react"));
console.log(arr.includes("react"));
includes() 方法也可以用于判断字符串是否包含指定的子字符串。
let str = "Hello world, welcome to the Runoob。";
console.log(str.includes("world"));
includes第二可选参数fromIndex,它允许从特定位置开始寻找匹配。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。
console.log([1, 2, 3].includes(2)); // === true)
console.log([1, 2, 3].includes(4)); // === false)
console.log([1, 2, NaN].includes(NaN)); // === true)
console.log([1, 2, -0].includes(+0)); // === true)
console.log([1, 2, +0].includes(-0)); // === true)
console.log(["a", "b", "c"].includes("a")); // === true)
console.log(["a", "b", "c"].includes("a", 1)); // === false)
includes() 和 indexOf()只能判断简单类型的数据,对于复杂类型的数据,比如对象类型的数组,二维数组,这些,是无法判断的。
let arr = [1, [2, 3], 4];
arr.includes([2, 3]); //false
arr.indexOf([2, 3]); //-1
虽然两者都是采用 === 的操作符来作比较的,但是对于NaN的处理结果并不相同。在js中 NaN === NaN 的结果是false,indexOf()也是这样处理的,但是includes()不是这样的。
let arr = [1, NaN, 2, 3];
arr.indexOf(NaN); //-1
arr.includes(NaN); //true
求幂运算符**
求幂运算符**,**和Math.pow()都可以用于求幂运算,并且可以和 += 一样的用法。
// 递归函数
const calculateExponent = (base, exponent) => base * ((--exponent > 1) ? calculateExponent(base, exponent) : base);
console.log(calculateExponent(3, 2)); // 9
// 求幂运算符
console.log(3 ** 2); // 9
// pow() 方法
console.log(Math.pow(3, 2)); // 9
let a = 3;
a **= 2;
console.log(a); // 9