Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何更改二维数组的第一个元素?_Arrays_Ruby - Fatal编程技术网

Arrays 如何更改二维数组的第一个元素?

Arrays 如何更改二维数组的第一个元素?,arrays,ruby,Arrays,Ruby,我有一个数组 [[-20,23],[-80,65], ... []] 我需要 [["20",23],["80",65], ... []] 我不知道怎么处理它 这是我的密码: @posts = Post.featured_post.where(new_follow: true) posts = (@posts.map { |post| "-#{ post[:ss_group_id] }_#{ post[:post_id] }" }).join(',') # here make paramete

我有一个数组

[[-20,23],[-80,65], ... []]
我需要

[["20",23],["80",65], ... []]
我不知道怎么处理它

这是我的密码:

@posts = Post.featured_post.where(new_follow: true)
posts = (@posts.map { |post| "-#{ post[:ss_group_id] }_#{ post[:post_id] }" }).join(',') # here make parameters for request
posts = '"' + posts + '"'

posts_response = get_request(code_constructor('API.get', { posts: posts },[])) # here is response from API

noexist_posts = @posts.pluck(:vk_group_id, :post_id) - (posts_response[0].map { |h| h.values_at('owner_id', 'id') })
              .map { |a| [a[0].abs.to_s, a[1]] } # here is what I want

我试图找出哪些帖子不存在。

你可以这样做

result = your_array.map{|a| [a[0].abs.to_s),a[1]]}

一种效率更低但看起来更酷的替代常规调动的方法:

x.map { |first, *rest| [first.abs.to_s, *rest] }

由于某些原因,还没有人发布“定期重新分配”,因此,这里就是(假设您希望在适当的位置更改数组):


改变的逻辑是什么?@WandMaker想从另一个数组中提取我从@post.pulk()得到的一个数组,作为API请求的响应。格式与堆栈溢出不同。请读“。我们希望看到一些东西,让我们了解您为解决问题所做的努力。堆栈溢出不是“给我代码站点”,而是“帮助我修复代码”站点。请阅读并修改您的问题,让我们更好地了解您的尝试。同时,请阅读我对效率低下感到好奇,因此我对其进行了基准测试。它比(破坏性)重新分配方法慢约40%,但比非破坏性重新分配方法快5%(因为
dup
开销)。就我个人而言,这是我最喜欢的方法,除非有数千个元素,否则开销可以忽略不计。@Jordan,很好。你介意在某个地方分享这个基准吗(例如)?我在这里给出了一个要点:(repl.it没有基准ipsgem,所以它不会运行)。FWIW我正在使用Ruby 2.2。
x.each { |numbers| numbers[0] = numbers.first.abs.to_s }