Mike,在受到影响后,我将抽出时间为哈希构建一个 keys() 运算符。
与此同时,我为解决这个问题所做的就是保留一个单独的键数组。这样,我可以在索引上使用 map、filter 和所有 set 操作,然后将这些值用作哈希操作的键
key_array = ["key1","key2","key3"];
my_hash = { "key1" : "value1", "key2" : "value2", "key3" : "value3" };
这仅在您控制哈希中的值时才有效,但这里有一些示例代码:
global {
kvHash = { "key1" : "value1", "key2" : "value2", "key3" : "value3" };
kArray = ["key1","key2","key3"];
}
pre {
pickKey = kArray[1];
value = kvHash.pick("$.#{pickKey}");
// add a new value
newKey = "key4";
newVal = "value4";
newArray = kArray.union(newKey);
newHash = kvHash.put([newKey],newVal);
}
注意到我使用集合运算符联合来保持数组充满唯一值
生成的 javascript 显示了它的作用:
var pickKey = 'key2';
var value = 'value2';
var newKey = 'key4';
var newVal = 'value4';
var newArray = ['key1', 'key2', 'key3', 'key4'];
var newHash = {'key2' :'value2','key1' :'value1','key4' :'value4','key3' :'value3'};
现在,您可以使用map或filter运算符将每个值单独传递给函数
c.map(function(x){x+2})
c.filter(function(x){x<5})