source: Dev/trunk/src/client/dojox/lang/functional/object.js @ 532

Last change on this file since 532 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

  • Property svn:executable set to *
File size: 1.9 KB
Line 
1define(["dojo/_base/kernel", "dojo/_base/lang", "./lambda"], function(kernel, lang, df){
2
3// This module adds high-level functions and related constructs:
4//      - object/dictionary helpers
5
6// Defined methods:
7//      - take any valid lambda argument as the functional argument
8//      - skip all attributes that are present in the empty object
9//              (IE and/or 3rd-party libraries).
10
11        var empty = {};
12
13        lang.mixin(df, {
14                // object helpers
15                keys: function(/*Object*/ obj){
16                        // summary:
17                        //              returns an array of all keys in the object
18                        var t = [];
19                        for(var i in obj){
20                                if(!(i in empty)){
21                                        t.push(i);
22                                }
23                        }
24                        return  t; // Array
25                },
26                values: function(/*Object*/ obj){
27                        // summary:
28                        //              returns an array of all values in the object
29                        var t = [];
30                        for(var i in obj){
31                                if(!(i in empty)){
32                                        t.push(obj[i]);
33                                }
34                        }
35                        return  t; // Array
36                },
37                filterIn: function(/*Object*/ obj, /*Function|String|Array*/ f, /*Object?*/ o){
38                        // summary:
39                        //              creates new object with all attributes that pass the test
40                        //              implemented by the provided function.
41                        o = o || kernel.global; f = df.lambda(f);
42                        var t = {}, v, i;
43                        for(i in obj){
44                                if(!(i in empty)){
45                                        v = obj[i];
46                                        if(f.call(o, v, i, obj)){ t[i] = v; }
47                                }
48                        }
49                        return t;       // Object
50                },
51                forIn: function(/*Object*/ obj, /*Function|String|Array*/ f, /*Object?*/ o){
52                        // summary:
53                        //              iterates over all object attributes.
54                        o = o || kernel.global; f = df.lambda(f);
55                        for(var i in obj){
56                                if(!(i in empty)){
57                                        f.call(o, obj[i], i, obj);
58                                }
59                        }
60                        return o;       // Object
61                },
62                mapIn: function(/*Object*/ obj, /*Function|String|Array*/ f, /*Object?*/ o){
63                        // summary:
64                        //              creates new object with the results of calling
65                        //              a provided function on every attribute in this object.
66                        o = o || kernel.global; f = df.lambda(f);
67                        var t = {}, i;
68                        for(i in obj){
69                                if(!(i in empty)){
70                                        t[i] = f.call(o, obj[i], i, obj);
71                                }
72                        }
73                        return t;       // Object
74                }
75        });
76       
77        return df;
78});
Note: See TracBrowser for help on using the repository browser.