Ruby -如何为数组元素的数组设置元素值

46scxncf  于 2023-04-05  发布在  Ruby
关注(0)|答案(4)|浏览(144)

如果我有一个数组,里面有五个空数组,即

`5_empty_arrays = [[], [], [], [], []]`

如何将名称插入到整个数组的第一个数组中,即

`[["Dean"], [], [], [], []]`


我现在可以得到

`5_empty_arrays.insert[0, "Dean"]`

`[["Dean"], [], [], [], [], []]`

但这增加了一个额外的数组,它没有插入到第一个数组中。

我遵循了Steen slag的建议,并对现有代码进行了更改,但现在我在每个元素中都打印了“Dean”。然而,当我像Steen slag一样手动创建数组的数组时,它就像预测的那样工作。任何想法?谢谢!

number_of_groups = 5

array = []
array = array.push([])* number_of_groups
array[0] << "Dean"
p array

=> [["Dean"], ["Dean"], ["Dean"], ["Dean"], ["Dean"]]
wvyml7n5

wvyml7n51#

five_empty_arrays = [[], [], [], [], []]
five_empty_arrays[0] << "Dean"
five_empty_arrays[0] << "John"

p five_empty_arrays # => [["Dean", "John"], [], [], [], []]
8gsdolmq

8gsdolmq2#

您正在插入一个元素(因此是一个新的数组元素),但您只想设置它

irb

> arrays = [[],[],[],[],[]]
=> [[], [], [], [], []]

irb> arrays[0][0]='a'
=> "a"

irb> arrays
=> [["a"], [], [], [], []]

要保留任何现有值,您可以用途:

> arrays[0][0]='a'
=> "a"
    
> arrays
=> [["a"], [], [], [], []]
    
> existing = arrays[0][0]
=> "a"
    
> newbie = [existing, 'newnew']
=> ["a", "newnew"]
    
> arrays[0] = newbie
=> ["a", "newnew"]
    
> arrays
=> [["a", "newnew"], [], [], [], []]
hs1ihplo

hs1ihplo3#

您可能希望首先选择第一个内部数组。您可以使用5_empty_arrays[0]或at()来完成此操作。
例如

> five_empty_arrays = [['a', 'b'], [], [], [], []]
=> [["a", "b"], [], [], [], []]
> five_empty_arrays[0].insert(0, "Dean")
=> ["Dean", "a", "b"]
> five_empty_arrays
=> [["Dean", "a", "b"], [], [], [], []]

如果你想添加到内部数组的末尾,你可以使用push()而不是insert()。

> five_empty_arrays = [['a', 'b'], [], [], [], []]
=> [["a", "b"], [], [], [], []]
> five_empty_arrays[0].push("Dean")
=> ["a", "b", "Dean"]
> five_empty_arrays
=> [["a", "b", "Dean"], [], [], [], []]
xv8emn3q

xv8emn3q4#

为什么不简单地做一个

array[0].unshift 'Dean'

?即使array[0]是非空数组,也可以使用此方法。

相关问题