Как объединить хеши внутри массива? - PullRequest
0 голосов
/ 06 июня 2019

Как мне объединить хэши в этих массивах:

description = [
  { description: "Lightweight, interpreted, object-oriented language ..." },
  { description: "Powerful collaboration, review, and code management ..." }
]

title = [
  { title: "JavaScript" },
  { title: "GitHub" }
]

так я получаю:

[
  {
    description: "Lightweight, interpreted, object-oriented language ...",
    title: "JavaScript"
  },
  {
    description: "Powerful collaboration, review, and code management ...",
    title: "GitHub"
  }
]

Ответы [ 3 ]

3 голосов
/ 06 июня 2019

Если 1) есть только 2 списка для слияния, 2) вы уверены, что списки имеют одинаковую длину и 3) n-й элемент списка l1 должен быть объединен с n-м элементом l2 (например, элементыправильно упорядочены в обоих списках) это можно сделать так просто, как

l1.zip(l2).map { |a,b| a.merge(b) }
0 голосов
/ 06 июня 2019
description = [
  { description: "Lightweight, interpreted" },
  { description: "Powerful collaboration" }
]

title = [
  { title: "JavaScript" },
  { title: "GitHub" }
]

description.each_index.map { |i| description[i].merge(title[i]) }
  #=> [{:description=>"Lightweight, interpreted",
  #     :title=>"JavaScript"},
  #    {:description=>"Powerful collaboration",
  #     :title=>"GitHub"}]

При использовании zip создается временный массив description.zip(title).В отличие от этого, метод выше не создает промежуточный массив.

0 голосов
/ 06 июня 2019

Введите следующий код

firstArray=[{:description=>"\nLightweight, interpreted, object-oriented language with first-class functions\n"}, {:description=>"\nPowerful collaboration, review, and code management for open source and private development projects\n"}]

secondArray=[{:title=>"JavaScript"}, {:title=>"GitHub"}]

result=firstArray.map do |v|
  v1=secondArray.shift
  v.merge(v1)
end

p result

Результат

[{:description=>"\nLightweight, interpreted, object-oriented language with first-class functions\n", :title=>"JavaScript"}, {:description=>"\nPowerful collaboration, review, and code management for open source and private development projects\n", :title=>"GitHub"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...