title: 字典

字典

字典辅助方法库允许您以更加便捷的方式对字典进行操作。

Filter

将输入字典中的每个值传给回调函数,如果回调函数返回 true,则把输入字典中的当前键值对加入结果字典中。

  1. var src = // { "a" : "1"} , { "b" : "2" }
  2. Dict.Filter(src, (key, val)=> val == "2"); // { "b" : "2" }

函数原型
  1. IDictionary<TKey, TValue> Filter<TKey, TValue>(IDictionary<TKey, TValue> source, Func<TKey, TValue, bool> predicate);
参数 描述
source 规定字典
predicate 判定回调函数,如果为true则将当前键值对加入结果集

Modify

将输入字典中的每个值传给回调函数,回调函数的返回值用于修改元素的值。

  1. var src = // { "a" : "1"} , { "b" : "2" }
  2. Dict.Modify(src, (key , val) => "3");
  3. // src:
  4. // { "a" : "3" },
  5. // { "b" : "3" }

函数原型
  1. void Modify<TKey, TValue>(IDictionary<TKey, TValue> source, Func<TKey, TValue, TValue> callback);
参数 描述
source 规定字典
callback 回调函数,回调函数的结果会作为当前键值对的新值

AddRange

将元素批量添加到字典。

  1. var src = // { "a" : "1" }, { "b" : "2" }
  2. var added = // { "c" : "3" }
  3. Dict.AddRange(src, added);
  4. // { "a" : "1" }, { "b" : "2" }, { "c" : "3" }

函数原型
  1. void AddRange<TKey, TValue>(IDictionary<TKey, TValue> source, IDictionary<TKey, TValue> added, bool replaced = true);
参数 描述
source 规定字典
added 需要添加的元素
replaced 遇到重复是否替换,如果不进行替换遇到重复将会抛出一个异常

Map

将字典值传入用户自定义函数,自定义函数返回的值作为新的字典值,加入到结果集。

Modify函数不同的是,Map不会导致原始字典的值发生修改。

  1. var src = // { "a" : "1" }, { "b" : "2" }
  2. Dict.Map(src, (key,val)=> "3");
  3. // src:
  4. // { "a" : "1"},
  5. // { "b" : "2" }
  6. // return:
  7. // { "a" : "3" },
  8. // { "b" : "3" }

函数原型
  1. IDictionary<TKey, TValue> Map<TKey, TValue>(IDictionary<TKey, TValue> source, Func<TKey, TValue, TValue> callback);
参数 描述
source 规定字典
callback 回调函数,回调函数的结果会作为键值对的新值加入到结果集

Keys

获取字典的键数组。

  1. var src = // { "a" : "1" }, { "b" : "2" }
  2. Dict.Keys(src);
  3. // { "a" : "b" }

函数原型
  1. TKey[] Keys<TKey, TValue>(IDictionary<TKey, TValue> source);
参数 描述
source 规定字典

Values

获取字典的值数组。

  1. var src = // { "a" , "1" }, { "b" , "2" }
  2. Dict.Values(src);
  3. // { "1" , "2" }

函数原型
  1. TKey[] Values<TKey, TValue>(IDictionary<TKey, TValue> source);
参数 描述
source 规定字典

Get

使用点(.)来访问深度字典(IDictionary<string, object>)。一般性Json的返回结果会被使用深度字典表示。

  1. var src = // { "hello" : { "world" : "test" } }
  2. Dict.Get(src, "hello.world"); // test
  3. Dict.Get(src, "hello.none", "null"); // null

函数原型
  1. object Get(IDictionary<string, object> source, string key, object def = null);
参数 描述
source 规定字典
key 键,支持使用点(.)来进行深度访问
def 如果值不存在,返回的默认值

Set

使用点(.)来访问深度字典,并为其指定位置设定一个值。

  1. var src = // { "hello" : { "world" : "test" } }
  2. Dict.Set(src, "hello.test" , "hello");
  3. // { "hello" : { {"world" : "test"} , { "test" , "hello"} } }

函数原型
  1. void Set(IDictionary<string, object> source, string key, object val);
参数 描述
source 规定字典
key 键,支持使用点(.)来进行深度访问
val 设定的值

Remove

Remove(IDictionary<,>, Func<,,>)

将输入字典中的每个值传给回调函数,如果回调函数返回 true,则移除字典中对应的元素并返回被移除的元素

  1. var src = // { "hello" : "world" }
  2. var result = Dict.Remove(src, (key,value) => true);
  3. // result: { "hello" : "world" }
  4. // { }

函数原型
  1. KeyValuePair<TKey,TValue>[] Remove<TKey, TValue>(IDictionary<TKey, TValue> source, Func<TKey, TValue, bool> predicate);
参数 描述
source 规定字典
predicate 回调函数,如果为true则移除元素

Remove(IDictionary<,>, string)

使用点(.)来访问深度字典,并移除其中指定的值,返回一个bool值来指定是否成功

  1. var src = // { "hello" : { {"world" : "catlib"} , { "catlib" , "hello"} } }
  2. Dict.Remove(src, "hello.catlib");
  3. // { "hello" : { "world" : "catlib" } }

函数原型
  1. bool Remove(IDictionary<string, object> source, string key);
参数 描述
source 规定字典
key 键,支持使用点(.)来进行深度访问