underscorejs类库之_.each(list, iteratee, [context])

语法:

_.each(list, iteratee, [context])

说明:

依次对集合的所有元素进行某种操作,原样返回list。接收3个参数,list集合可以理解为数据源;iteratee即迭代器可以理解为回调方法;context执行上下文。

  • list可以为数组,对象,字符串和arguments
  • iteratee 会传第三个参数(element, index, list)或(value, key, list)
  • context可以改变iteratee内部的this

示例一:each可以循环数组、对象、字符串和arguments

//遍历数组
_.each([1, 2, 3], function (element, index, list) {
    console.log(element);
});

//遍历对象
_.each({one: ‘一‘, two: ‘二‘, three: ‘三‘}, function(value, key, list){
    console.log(value);
});

//遍历字符串
_.each(‘123‘, function(element, index, list){
    console.log(element);
});

//遍历arguments
function abc(){
    _.each(arguments, function(element, index, list){
       console.log(element);
    });
}
abc(1, 2, 3);

示例二:iteratee传递的参数

//数组的情况
_.each([1, 2, 3], function (element, index, list) {
    console.log(element, index, list);
    //1 0 [1, 2, 3]
    //2 1 [1, 2, 3]
    //3 2 [1, 2, 3]
});

//对象的情况
_.each({one: ‘一‘, two: ‘二‘, three: ‘三‘}, function(value, key, list){
    console.log(value, key, list);
    //一 one Object {one: "一", two: "二", three: "三"}
    //二 two Object {one: "一", two: "二", three: "三"}
    //三 three Object {one: "一", two: "二", three: "三"}
});

示例三:context可以改变iteratee内部的this

_.each([1], function (element, index, list) {
    console.log(this); //window
});

_.each([1], function (element, index, list) {
    console.log(this); //{key: 1}
}, {key : 1});

示例四:each的返回值

var arr1 = _.each([1, 2, 3], function (element, index, list) {
});

var arr2 = _.each({one: ‘一‘, two: ‘二‘, three: ‘三‘}, function(element, index, list){
});
console.log(arr1); //[1, 2, 3]
console.log(arr2); //Object {one: "一", two: "二", three: "三"}

_.forEach的功能和_.each是一样的

_.forEach([1, 2, 3], function (element, index, list) { console.log(element); });

遍历非集合(遍历特殊值都不会报错,但也不执行。在遍历一个集合的时候,最好能先确定他是数组或对象等。)

_.each(null, function (element, index, list) {
    console.log(element); //不执行
});

_.each(undefined, function (element, index, list) {
    console.log(element); //不执行
});

_.each(123, function (element, index, list) {
    console.log(element); //不执行
});

_.each(new Date(), function (element, index, list) {
    console.log(element); //不执行
});

iteratee还可以是全局的方法

_.each([1, 2, 3], alert); //会弹三次
时间: 2024-10-12 13:01:25

underscorejs类库之_.each(list, iteratee, [context])的相关文章

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

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

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内部

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

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

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

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

each_.each(list, iteratee, [context]) 别名: forEach

<!DOCTYPE html> <html> <meta charset="utf-8"> <head> <title></title> <script type="text/javascript" src="underscore.js"></script> </head> <script type="text/javasc

031113_【第11章:Java常用类库】_比较器(Comparable、Comparator)

//****ComparatorDemo.java import java.util.* ;class Student{    // 指定类型为Student    private String name ;    private int age ;    public Student(String name,int age){        this.name = name ;        this.age = age ;    }    public boolean equals(Obje

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一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象.它弥补了部分jQuery没有实现的功能,同时又是Backbone.js必不可少的部分. 中文API:http://www.css88.com/doc/underscore/ 英文API: http://underscorejs.org/ GitHub仓库: https://github.com/jashkenas/underscore Underscore没有对原生