HAML .each 变量函数
HAML .each function for variables
我有大约 30 多个变量,其中包含一个包含多个字符串的数组。
1 个变量 = 1 个数组。
我想知道是否可以创建一个包含所有变量名称的新变量,这样我就可以遍历它们。
例如:
这些是单独的数组:
- @a = ["a","b","c","d","d"];
- @b = ["a","b","c","c","d"];
- @c = ["a","b","c","d"];
现在我想在单独的变量中获取所有唯一和重复的字符串,如下所示:
- @x_uniq = @a.uniq
- @x_dup = @a.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys
...
- @x_uniq = @b.uniq
- @x_dup = @b.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys
...
- @x_uniq = @c.uniq
- @x_dup = @c.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys
这就是我使用每个 x_uniq 和 x_dup 变量的方式:
- @x_uniq = @a.uniq
- @x_dup = @a.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys
%ul.list-inline
- @x_uniq.each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
- @x_dup.each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
如果我有 30 个带有数组的变量,我需要为它们中的每一个单独执行 .each() 循环。我想知道,是否有人知道一种方法来遍历包含不同数据的 30 个 x_uniq 和 x_dup 变量。
我想创建一个包含所有 3 个变量的变量。像这样(顺便说一句,我不知道变量@d 是否正确):
- @d = [@a,@b,@c];
我接下来要做的是遍历@d 变量,以获取各个变量及其内容。 问题是我不知道如何遍历@d 变量。
有人能解决我的问题吗?还是解决这个问题的新方法?
谢谢。
不要创建一堆原本不相关的变量。始终尝试从操作结构的角度考虑您的 Ruby 代码:
- @data = { a: ["a","b","c","d","d"], b: ["a","b","c","c","d"], c: ["a","b","c","d"] }
然后定义一个方法,该方法获取该数组和 returns 分解的唯一数据和去重数据:
def dedup_uniq(array)
{
uniq: array.uniq,
dup: array.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select { |k,v| v > 1 }.keys
}
end
然后处理这个很容易,你只需迭代:
- @data = @data.map { |k, d| [ k, dedup_uniq(d) ] }.to_h
那么你就有了你想要的结构:
- @data.each do |k, d|
%ul.list-inline
- d[:uniq].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
- d[:dup].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
我有大约 30 多个变量,其中包含一个包含多个字符串的数组。
1 个变量 = 1 个数组。
我想知道是否可以创建一个包含所有变量名称的新变量,这样我就可以遍历它们。
例如:
这些是单独的数组:
- @a = ["a","b","c","d","d"]; - @b = ["a","b","c","c","d"]; - @c = ["a","b","c","d"];
现在我想在单独的变量中获取所有唯一和重复的字符串,如下所示:
- @x_uniq = @a.uniq - @x_dup = @a.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys ... - @x_uniq = @b.uniq - @x_dup = @b.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys ... - @x_uniq = @c.uniq - @x_dup = @c.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys
这就是我使用每个 x_uniq 和 x_dup 变量的方式:
- @x_uniq = @a.uniq - @x_dup = @a.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys %ul.list-inline - @x_uniq.each do |x| %li %i{:class=>"fas fa-#{x} fa-2x"} %span.f6 #{x} - @x_dup.each do |x| %li %i{:class=>"fas fa-#{x} fa-2x"} %span.f6 #{x}
如果我有 30 个带有数组的变量,我需要为它们中的每一个单独执行 .each() 循环。我想知道,是否有人知道一种方法来遍历包含不同数据的 30 个 x_uniq 和 x_dup 变量。
我想创建一个包含所有 3 个变量的变量。像这样(顺便说一句,我不知道变量@d 是否正确):
- @d = [@a,@b,@c];
我接下来要做的是遍历@d 变量,以获取各个变量及其内容。 问题是我不知道如何遍历@d 变量。
有人能解决我的问题吗?还是解决这个问题的新方法?
谢谢。
不要创建一堆原本不相关的变量。始终尝试从操作结构的角度考虑您的 Ruby 代码:
- @data = { a: ["a","b","c","d","d"], b: ["a","b","c","c","d"], c: ["a","b","c","d"] }
然后定义一个方法,该方法获取该数组和 returns 分解的唯一数据和去重数据:
def dedup_uniq(array)
{
uniq: array.uniq,
dup: array.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select { |k,v| v > 1 }.keys
}
end
然后处理这个很容易,你只需迭代:
- @data = @data.map { |k, d| [ k, dedup_uniq(d) ] }.to_h
那么你就有了你想要的结构:
- @data.each do |k, d|
%ul.list-inline
- d[:uniq].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
- d[:dup].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}