欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

判断列表里的项目 - every, some, contains《 Underscore 基础 》

every 这个方法,可以去判断一下一个列表里面,是否全部都符合我们设置的规则,如果是,这个方法就会返回 true ,如果不是,就会返回 false 。

类似的还有一个 some 方法,如果列表里面有一个项目符合我们要判断的规则,就会返回 true ...

contains 这个方法,可以去判断一下列表里是否包含指定的值 ...

下面,我们去看一下这几个方法...

在 albums 里面,有三个对象 ... 我们判断一下这些对象里面是否都有 title 这个属性 ... _.every ... 先指定一下要判断的列表 ... 这里就是 albums ..

再去设置一下要判断的东西 ... 它应该是一个函数 ... 可以给它一个参数 ... 这个参数可以表示列表里面的单个项目 ... 这里我们用 album 来表示 ... 然后在这里面,用一个 return ... 再使用 Underscore 的 has 方法 ... 去判断一下对象里面,是否包含指定的属性 .. 这个对象就是 album ... 要检查的属性是 title ...

如果列表里面的每一个对象里面都有 title 这个属性,它就会返回 true ...

_.every(albums, function(album){ return _.has(album, 'title') })

回车 ... every 这个方法给我们返回来的结果是 true ... 这就表示,在 albums 里面的所有的对象,都包含 title 这个属性 ...

再去试一下返回 false 的情况 ...

要判断的条件是,对象里面的 artist 属性的值等于 Beyond ...

_.every(albums, function(album){ return album.artist === 'Beyond' })

返回的是 false ,因为最后一个对象的 artist 属性的值是 Coldplay ,不是 Beyond ...

some

some 这个方法只要有一个项目符合判断的条件,就会返回 true ... 把 every 换成 some ... Underscore 里面的很多方法都有别名,比如 every 的别名是 all ,some 的别名是 any ...

_.some(albums, function(album){ return album.artist === 'Beyond' })

回车 ... 结果是 true ... 因为 albums 里面有项目的 artist 属性的值是 Beyond ... 如果一个也没有的话,它就会返回 false ..

contains

下面我们再去试一下 contains 这个方法 ... 它可以判断列表里是否包含指定值 ... 用它去判断一下 fruits 这个要数组 ... (# 输入 fruites )

_.contains ... 要判断的列表是 fruits ... 再指定一下要查看的值 ... 这里设置成 apple ... 意思就是,看一下 fruits 这个列表里面,有没有 apple 这个值 ...

_.contains(fruits, 'apple')

返回的结果是 true ... 表示 fruits 里面包含 apple 这个值 ...

普通分类: