一、some()与every()函数:
some和every都是JS中的迭代函数,some找到一个满足条件的就返回true,every必须全部都满足时才会返回true,return 后的内容是要判断的逻辑。
- every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。
- some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。
参数:
- item是每次遍历得到的值
- index是当前遍历的下标
- array就是数组本身
- return写判断逻辑
var arr = [ 1, 2, 3, 4, 5, 6 ];
arr.some( function( item, index, array )=>{
console.log( 'item=' + item + ',index='+index+',array='+array );
return item > 3;
})
arr.every(( item, index, array )=>{
console.log( 'item=' + item + ',index='+index+',array='+array );
return item > 3;
})
案例:实现一个不可重复添加逻辑。搜索历史中,如果输入了一个重复的搜索记录,搜索历史不应该添加该字段。所以需要的是只要有一个重复字段就返回true,而不是全部,因此使用some。
currentInfo //函数传递过来的当前搜索字段的id
//去重,some是有一个符合就立刻停止,返回true。every是全部的都满足下面的等式才会返回
const repeatFlag = historyArray.some(h => {
return h.id === currentInfo.id
})
//返回true表示有该字段,直接return退出即可
if (repeatFlag)
return
//将不重复的添加到cell中
historyArray.push(currentInfo)
二、Map函数:
对内部的每一个元素做一个相同的处理,然后返回一个新数组。
- 不会改变原来数组的值
- 会返回一个新数组
参数:
- item是每次遍历得到的值
- index是当前遍历的下标
- array就是数组本身
- return写判断逻辑
const arr = [1,2,3,4,5]
const arr_after_map = arr.map((currentVal,index,arrs)=>{
return currentVal*currentVal
})
console.log("原数组的值为",arr)
console.log("修改之后的值为",arr_after_map)
三、find()、filter()函数
find和filter都是查找函数,查找目标元素。
filter和find区别:filter返回的是数组,find返回的是对象。
注:find ()找到第一个元素后就不会在遍历其后面的元素,所以如果数组中有两个相同的元素,他只会找到第一个,第二个将不会再遍历了
const list = [{'name':'1',index:1},{'name':'2'},{'name':'1'}]
let list2 = list.find(i=>i.name==='1')
let list3 = list.filter(i=>i.name==='1')
console.log(list2); { name: '1', index: 1 }
console.log(list3);[ { name: '1', index: 1 }, { name: '1' } ]
- find查找不到返回undefined
- filter查找不到返回[]
四、unshift()函数:
在数组首部插入一个元素,push是插入末尾,unshift是插在首部。
let arr = [2,3]
arr.unshift(1)
arr.push(4)
console.log(arr) //[1,2,3,4]