underscorejs之_.contains(list, item, fromIndex, guard)

语法:

_.contains(list, item, fromIndex, guard)

说明:

list集合包含指定的值则返回true,否则返回false

  • list可以为数组,对象,字符串和arguments
  • item是一个参数(contains会处理list中是否包含此参数),可以为数字,字符串
  • fromIndex是一个数字,根据此索引决定list开始检索的位置,可为正值,也可为负值;(负值不是真正的负值,而是list的倒数,下面会详细讲解);若非数字则fromIndex的索引从0开始

代码示例:

示例一:contains对list根据item进行检索,包含item则返回true

var result;

// 数组进行检索
result = _.contains([1, 2, 3], 2);
console.log(result) //=> true

// 对象进行检索
result = _.contains({x: 1, y: 2, z: 3}, 2);
console.log(result) //=> true

// 字符串进行检索
result = _.contains(‘123‘, "2");
console.log(result) //=> true

// arguments进行检索
function abc(){
    result = _.contains(arguments, 2);
    console.log(result); //=> true
}
abc(1, 2, 3);

示例二:item属性

var result;

// item为数字
result = _.contains([‘1‘, 2, ‘3‘], 2);
console.log(result) //=> true

// item为字符串
result = _.contains({x: ‘1‘, y: ‘2‘, z: ‘3‘ }, "4");
console.log(result) //=> false

// item为bool
result = _.contains([0, false], true);
console.log(result) //=> false

示例三:fromIndex索引值(可为正值,也可为负值,非number类型则fromIndex默认为0)

var result;

// item为数字
result = _.contains([1, 2, 3], 3, 0);
console.log(result) //=> true

// item为字符串
result = _.contains([1, 2, 3], 3, "3");
console.log(result) //=> true

// item为负值
result = _.contains({x: ‘1‘, y: ‘2‘, z: ‘3‘ }, "3", -1);
console.log(result) //=> true

result = _.contains({x: ‘1‘, y: ‘2‘, z: ‘3‘ }, "2", -1);
console.log(result) //=> false 由此可看出当fromIndex为负值的时候,fromIndex是根据list最后一位倒数

contains也可有第四个参数guard;

示例一:guard为真值的情况fromIndex的索引从0开始;(这个属性官方没有做出明确的说明,只是个人理解,若有更好的建议,可以联系作者)

var result;

// guard为空,则根据fromIndex索引进行检索
result = _.contains([‘a‘, ‘b‘, ‘c‘], ‘c‘, 2);
console.log(result) //=> true

// guard为true
result = _.contains([‘a‘, ‘b‘, ‘c‘], ‘c‘, 3, true);
console.log(result) //=> true

// guard为false
result = _.contains([‘a‘, ‘b‘, ‘c‘], ‘c‘, 3, false);
console.log(result) //=> false
时间: 2024-10-17 05:19:56

underscorejs之_.contains(list, item, fromIndex, guard)的相关文章

浅谈 Underscorejs中 _.throttle 和 _.debounce 的差异和使用场景

通常的函数(或方法)调用过程分为三个部分:请求.执行和响应.(文中"请求"与"调用"同义,"响应"与"返回"同义,为了更好的表述,刻意采用请求和响应的说法.) 某些场景下,比如响应鼠标移动或者窗口大小调整的事件,触发频率比较高.若稍处理函数微复杂,需要较多的运算执行时间,响应速度跟不上触发频率,往往会出现延迟,导致假死或者卡顿感. 在运算资源不够的时候,最直观的解决办法就是升级硬件,诚然通过购买更好的硬件可以解决部分问题,但是

underscorejs之_.filter(list, predicate, [context])

语法: _.filter(list, predicate, [context]) 说明: 对list集合的每个成员依次进行匹配(根据predicate迭代函数检测),返回匹配成功的集合 list可以为数组,对象,字符串和arguments predicate会传第三个参数value, key, list(参数名可自定义) predicate函数需要返回值 context可以改变predicate函数内部的this 代码示例: 示例一:filter对数组,对象,字符串,arguments进行操作并

underscorejs之_.countBy(list, iteratee, [context])

语法 _.countBy(list, iteratee, [context]) 说明 排序一个列表组成一个组,并且返回各组中的对象的数量的计数.类似groupBy,但是不是返回列表的值,而是返回在该组中值的数目.就像EXCEL里的分类统计 list为 遍历的集合,如数组.对象.字符串.arguments等. iteratee 迭代器,可以是一个function也可以字符串等. iteratee 有三个参数 (element, index, list) iteratee 需要有返回 context

underscorejs之_.find(list, predicate, [context])

语法: _.find(list, predicate, [context]) 说明: 对list集合的每个成员依次进行匹配(根据predicate迭代函数检测),匹配成功则立即返回当前成员 list可以为数组,对象,字符串和arguments predicate会传第三个参数value, key, list(参数名可自定义) predicate函数需要返回值 context可以改变predicate函数内部的this 代码示例: 示例一:find对数组,对象,字符串,arguments进行操作并

underscorejs之 _.indexBy(list, iteratee, [context])

语法 _.indexBy(list, iteratee, [context]) 说明 给定一个list,和 一个用来返回一个在列表中的每个元素键 的iterator 函数(或属性名), 返回一个每一项索引的对象.和groupBy非常像,但是当你知道list的key是唯一的时候可以使用indexBy**. 什么时候用_.indexBy? api都会给我们返回类似下面这样子的数据,现在我们要写一个方法.传入id,返回相对应的name或是其他. var data = [{ id: 1, name: '

underscorejs之_.map(list, iteratee, [context])

语法: _.map(list, iteratee, [context]) 说明: 对集合的每个成员依次进行某种操作,将返回的值依次存入一个新的数组.接收3个参数.list可理解为数据源iteratee迭代器可理解为回调方法;context执行上下文. list可以操作数组,对象,字符串和arguments iteratee 会传第三个参数(element, index, list)或(value, key, list) iteratee里面需要返回值. context可以改变iteratee内部

underscore-1.8.3-analysis.js

1 // Underscore.js 1.8.3 2 // http://underscorejs.org 3 // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 4 // Underscore may be freely distributed under the MIT license. 5 // 中文注释 by hanzichi @https://github.com/h

Underscore-逐行分析

// Underscore.js 1.8.3// http://underscorejs.org// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors// Underscore may be freely distributed under the MIT license. (function() { // Baseline setup // -------------- // 传

[源码]underscore-1.8.3

// Underscore.js 1.8.3 // http://underscorejs.org // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors // Underscore may be freely distributed under the MIT license. // 中文注释 by hanzichi @https://github.com/hanzichi //