美文网首页
【JS】浅析项目中常用到的循环:some、every、map、f

【JS】浅析项目中常用到的循环:some、every、map、f

作者: 废柴码农 | 来源:发表于2019-06-24 19:58 被阅读0次

每一种遍历都有不同的适用场景,下面就来简单的总结一下:

some()是对数组中每一项遍历,只要有一项返回true,则返回true,即:有true为true

举个栗子:

var arr = [ 1, 2, 3, 4, 5, 6 ]; 
console.log( arr.some( function( item, index, array ){ 
    console.log(item);
    return item > 3; 
})); 

打印结果为:1,2,3,4 函数返回true,遍历到第四次的时候遇到了一个符合表达式的之后跳出循环,整体结果返回true

every()是对数组中每一项遍历,每一项返回true,则返回true。如果有一项为false,则整体为false,即:全true为true

还是上面的栗子,换成every

var arr = [ 1, 2, 3, 4, 5, 6 ]; 
console.log( arr.every( function( item, index, array ){ 
    console.log(item);
    return item > 3; 
})); 

打印结果为 1,false,为什么只打印出来了1,因为第一项就不符合表达式,所以跳出循环,返回false

map()遍历每一项,返回一个新数组,和上面两个方法的区别是不会跳出循环

还是上面那个栗子

var arr = [ 1, 2, 3, 4, 5, 6 ]; 
console.log( arr.map( function( item, index, array ){ 
    console.log(item);
    return item > 3; 
})); 

打印出来的结果是:1,2,3,4,5,6 函数返回结果: [false, false, false, true, true, true]
大家有没有发现什么,那就是map再怎么循环最后仍然是遍历完每一项,不会跳出循环
下面给大家说一种项目中遇到的场景


WeChat8b08b261b9d9d1f50b9eb72db1ae878c.png

如下图:我项目中遇到的情景:只能选择已生效的产品进行留存,如果选中了未生效的产品留存,会弹出警告框
这种场景下,如果用map遍历则会遍历所有,而且会一只跳出警告框,因为他不会跳出循环,所以这种情况下就用every或者some比较好,具体示例代码如下

let res = this.state.selectedProductRows.every(item=>{
                return item.effectState ===1 //状态为1的时候是已生效的时候
            })  //res的结果返回的是true/false
if(res){
     //这块是true时候的处理逻辑
 }else{
     message.error('请选择已生效的产品进行留存')
 }
filter():同样返回一个新的数组,但是返回的是符合条件的数组项,同样不会跳出循环

还举上面的栗子

var arr = [ 1, 2, 3, 4, 5, 6 ]; 
console.log( arr.filter( function( item, index, array ){ 
    console.log(item);
    return item > 3; 
})); 

打印的结果为1,2,3,4,5,6 函数返回结果为[4,5,6]

发现没有,这个函数跟上面几种方法的区别,也就是说filter是返回的是符合项,上面的几种结果返回的是布尔值

filter一般适用的场景:手动删除tag标签/手动删除表格
常用代码如下:

//这个是从antd官网拷贝来的手动删除那块的代码
 handleClose = removedTag => {
    const tags = this.state.tags.filter(tag => tag !== removedTag);
    console.log(tags);
    this.setState({ tags });
  };

相关文章

网友评论

      本文标题:【JS】浅析项目中常用到的循环:some、every、map、f

      本文链接:https://www.haomeiwen.com/subject/docoqctx.html