15.some:判断数组中有没有符合条件的元素,一个符合的都没有返回false,有一个就是true。
let arr = ["1", 1, "a", "b", "a"]; let someFlag1 = arr.some((item) => { return item == "a"; }) console.log(someFlag1); // true let someFlag2 = arr.some((item) => { return item == "c"; }) console.log(someFlag2); // false
16.every:every与some差不多,全部符合条件才返回true,否则就是false。
let arr = ["1", 1, "a", "b", "a"]; let everyFlag1 = arr.every((item) => { return item == "a"; }) console.log(everyFlag1); // false let arr1 = ["a", "a"] let everyFlag2 = arr1.every((item) => { return item == "a"; }) console.log(everyFlag2); // true
17.find方法:找到符合条件的项,并且返回第一项,找不到返回undefined
var findArr = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; var index = findArr.find((item, index, arr) => { console.log(item); // Alice console.log(index); // 0 console.log(arr); // ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'] return item == "Alice"; }) console.log(index); // Alice var index = findArr.find((item, index, arr) => { return item == "1"; }) console.log(index); // undefined
18.findIndex方法:找到符合条件的项的下标,并且返回第一个,找不到就返回-1;
var indexArr = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; var index = indexArr.findIndex((item, index, arr) => { console.log(item); // Alice console.log(index); // 0 console.log(arr); // ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'] return item == "Alice"; }) console.log(index); // 0 var index = indexArr.findIndex((item, index, arr) => { return item == "1"; }) console.log(index); // -1
19.includes方法:数组或者字符串是否包含指定元素,有就返回true,没有就返回false
// 数组 var findArr = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; var index = findArr.includes("Alice"); console.log(index); // true var index = findArr.includes("1"); console.log(index); // false // 字符串 var str = "abcdefg"; var index = str.includes("a"); console.log(index); // true var index = str.includes("w"); console.log(index); // false
项目场景:模糊查询
var arr = [ { name:"王巴丹", age:11 }, { name:"王七丹", age:10 }, { name:"王刘丹", age:12 }, { name:"张是丹", age:12 } ] var arrIncludes = arr.filter((item)=>{ return item.name.includes("王") }) console.log(arrIncludes);// [{name:"王巴丹",age:11},{name:"王七丹",age:10},{name:"王刘丹",age:12}]
20.reduce方法
reduce() 方法对数组中的每个元素执行一个升序执行的 reducer 函数,并将结果汇总为单个返回值。
第一个参数是累加器,直白点就是加多少次
第二个参数是原数组的值
第三个参数是原数组值对应的下标
第四个参数是原数组本身
第五个参数(与回调函数并列的参数)是初始值,就是从初始值的基础上累加。
项目场景1:累加计算和
var numbers = [1, 2, 3, 4] let result = numbers.reduce(function (total, currentValue, currentIndex, arr) { console.log(total, currentValue, currentIndex, arr) return total + currentValue }, 10) console.log(result); // 20
项目场景2:扁平化数组(适用二维数组变一维数组,数组元素都是数组)
var numbers = [[1, 2], [3, 4]] let result = numbers.reduce(function (total, currentValue, currentIndex, arr) { console.log(total, currentValue, currentIndex, arr) return total.concat(currentValue) }) console.log(result); // [1, 2, 3, 4]
项目场景三:直接计算总价
var numbers = [ { price: 10, num: 1 }, { price: 20, num: 2 } ] let result = numbers.reduce(function (total, currentValue, currentIndex, arr) { // console.log(total, currentValue, currentIndex, arr) return total + currentValue.price * currentValue.num; }, 0) console.log(result); // 50
项目场景四:计算数组中每个元素出现的次数,项目中用来做投票统计板
var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; var countedNames = names.reduce(function (allNames, name) { if (name in allNames) { allNames[name]++; } else { allNames[name] = 1; } return allNames; }, {}); console.log(countedNames); // {Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}
关于数组和字符串的方法很多,其实真正常用的也就固定的几个,大家有不同的项目场景可以相互交流学习