JavaScript中some()、every()、map()、find()、filter()、unshift()函数

一、some()与every()函数:

some和every都是JS中的迭代函数,some找到一个满足条件的就返回true,every必须全部都满足时才会返回true,return 后的内容是要判断的逻辑。

  • every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。
  • some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。

参数:

  1. item是每次遍历得到的值
  2. index是当前遍历的下标
  3. array就是数组本身
  4. 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函数:

对内部的每一个元素做一个相同的处理,然后返回一个新数组。

  • 不会改变原来数组的值
  • 会返回一个新数组

参数:

  1. item是每次遍历得到的值
  2. index是当前遍历的下标
  3. array就是数组本身
  4. 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]

猜你喜欢

转载自blog.csdn.net/weixin_60414376/article/details/127159978
今日推荐