gpt4 book ai didi

arrays - 根据给定索引重新排列数组

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:53 27 4
gpt4 key购买 nike

例子如下:这只是简化版本,只是为了让您了解我在说什么。

current_properties = { "id" : 0, "name":1, "age": 2, "gender":3 }
new_index = { "id":0, "name":1, "gender": 2, "age": 3, "address":4 }

这里是数组值:

arr = ["1234", "John Doe", 35, "Male"]

有没有办法根据给定的索引交换值?那些不在当前属性上的索引,必须插入一个空白元素。

所以这是预期的输出:

arr = ["1234", "John Doe", "Male", 35, ""]

最佳答案

current_properties = {"id" => 0, "name" => 1, "age" =>  2, "gender" => 3}
new_index = {"id" => 0, "name" => 1, "gender" => 2, "age" => 3, "address" => 4}
arr = ["1234", "John Doe", 35, "Male"]

idx = new_index.map {
|key, value| [value, key]
}.sort.map {
|value, key| current_properties[key]
}
# => [0, 1, 3, 2, nil] => (A kind of mapping old -> new indexes)
new_arr = (0...new_index.length).map { |i| idx[i] ? arr[idx[i]] : '' }
# => ["1234", "John Doe", "Male", 35, ""]

更新:@CarySwoveland 建议的较短版本,使用 Enumerable#sort_by :

...
idx = new_index.sort_by(&:last).map { |key, _| current_properties[key] }
new_arr = (0...new_index.length).map { |i| idx[i] ? arr[idx[i]] : '' }

关于arrays - 根据给定索引重新排列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33862733/

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