gpt4 book ai didi

hash - 在 KRL 中迭代哈希的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-05 00:04:46 25 4
gpt4 key购买 nike

假设我有一个不知道哈希内容的哈希(所以我不能为此使用pick)。这是哈希的示例:

{ "key1" : "value1", "key2" : "value2", "key3" : "value3" }

我想遍历这个哈希并创建以下数组:
["key1=value1", "key2=value2", "key3=value3"]

我的第一种方法是构建一个遍历散列并填充数组的递归函数,但我不确定是否可以这样做。在数组中,我可以使用 head() 和 tail() 来帮助递归,但这些运算符不可用于哈希(据我所知)。

我想从一个函数中启动它,因为我在一个模块中这样做。例如:
hash_to_array = function(h) {
// magic code here
}

manipulate_params = function(params) {
params_array = hash_to_array(params);
// more code here...

}

最佳答案

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);
}

注意到我使用了集合运算符 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 filter 运算符将每个值单独传递给函数
c.map(function(x){x+2})

c.filter(function(x){x<5})

关于hash - 在 KRL 中迭代哈希的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5362965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com