Майк, после удара я выделю время для построения оператора keys () для хэшей.
А пока что я обошел это, чтобы сохранить отдельный массив ключей.Таким образом, я могу использовать карту, фильтр и все операции над множествами для index , а затем использовать эти значения в качестве ключей для операций хеширования
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);
}
Заметил, что я использовал оператор set union , чтобы сохранить массивполный уникальных значений
Сгенерированный 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 или фильтр операторов для передачи каждого значения индивидуально в функцию
c.map(function(x){x+2})
c.filter(function(x){x<5})