Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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
Ruby on rails 在不迭代数组的情况下,如何检查循环中是否存在值?_Ruby On Rails_Arrays_Ruby - Fatal编程技术网

Ruby on rails 在不迭代数组的情况下,如何检查循环中是否存在值?

Ruby on rails 在不迭代数组的情况下,如何检查循环中是否存在值?,ruby-on-rails,arrays,ruby,Ruby On Rails,Arrays,Ruby,这是我的阵列。我一直迭代到最后,当当前值包括“locSlug”或“neighborary”时,我将检查下一个值是否包含“=”。如果它有“=”,那么我什么也不做,否则我将用“&”添加下一个值和当前值。但我不想对整个值进行迭代。我如何在不迭代整个循环的情况下做到这一点 i have an array. key_values = ["loc=june 1 2 jubli's, Captain tim, BI", "locSlug=june-1-", "-2-jubli'

这是我的阵列。我一直迭代到最后,当当前值包括“locSlug”或“neighborary”时,我将检查下一个值是否包含“=”。如果它有“=”,那么我什么也不做,否则我将用“&”添加下一个值和当前值。但我不想对整个值进行迭代。我如何在不迭代整个循环的情况下做到这一点

i have an array.
key_values = 
    ["loc=june 1  2 jubli's, Captain tim, BI",
     "locSlug=june-1-",
     "-2-jubli's_Captain-tim_BI",
     "lat=29.404153823852539",
     "long=-54.88862609863281",
     "status=7",
     "pg=10",
     "pgsz=15",
     "sprefix=/kings_search",
     "city=Captain tim",
     "neighborhood=june 1 ",
     " 2 jubli's",
     "state_id=BI",
     "county_fips=15045"]
上面的代码运行良好,但我不想这样做。需要你的建议。
如果您需要进一步澄清,请询问。

将数组转换为哈希,然后按键访问 如果您可以访问原始数据对象(例如cookie、JSON字符串或数据库查询),则可能有一种更有效的方法来执行此操作。但是,假设您由于某种原因无法直接访问源数据,或者您正在处理一个无法控制的数组,那么您可以将数据转换为Ruby,然后通过键访问所需的值。例如:

def check_for_special_character(key_values)
    key_values.each_with_index do |val,index|
      unless index+1 >= key_values.length       
        if (val.include?("locSlug=") || val.include?("neighborhood=")) && !key_values[index+1].include?("=") 
          key_values[index] = [val, key_values[index+1]].join("&") 
          key_values.delete_at(index+1)
        end
      end
    end
  end

从cookie中检索的字符串如下所示:

# Split your array elements on "=", and then convert the resulting array of
# arrays to a hash so you can return values by key. You need to have some
# sort of guard in place for sub-arrays that don't have exactly two elements.

hash = key_values.map { |e| e.split ?= }.select { |a| a.size.eql? 2 }.to_h

hash.fetch 'locSlug'
#=> "june-1-"

hash.fetch 'neighborhood'
#=> "june 1 "
"loc=june 1  2 jubli's, Captain tim, BI&locSlug=june-1-&-2-jubli's_Captain-..."
#                                      ^               ^
#                                  delimiter       character
如您所见,
&
同时用作分隔符和常规字符:

str = "loc=june 1  2 jubli's, Captain tim, BI&locSlug=june-1-&-2-jubli's_Capta"\
      "in-tim_BI&lat=29.404153823852539&long=-54.88862609863281&status=7&pg=10"\
      "&pgsz=15&sprefix=/kings_search&city=Captain tim&neighborhood=june 1 & 2"\
      " jubli's&state_id=BI&county_fips=15045"
换句话说,你的绳子断了。您应该首先通过向cookie写入一个正确转义的字符串来解决这个问题。一个月后,你会使用。应该是这样的:

# Split your array elements on "=", and then convert the resulting array of
# arrays to a hash so you can return values by key. You need to have some
# sort of guard in place for sub-arrays that don't have exactly two elements.

hash = key_values.map { |e| e.split ?= }.select { |a| a.size.eql? 2 }.to_h

hash.fetch 'locSlug'
#=> "june-1-"

hash.fetch 'neighborhood'
#=> "june 1 "
"loc=june 1  2 jubli's, Captain tim, BI&locSlug=june-1-&-2-jubli's_Captain-..."
#                                      ^               ^
#                                  delimiter       character
这可以通过以下方式进行分析:

str = "loc=june+1++2+jubli%27s%2C+Captain+tim%2C+BI&locSlug=june-1-%26-2-jubli"\
      "%27s_Captain-tim_BI&lat=29.404153823852539&long=-54.88862609863281&stat"\
      "us=7&pg=10&pgsz=15&sprefix=%2Fkings_search&city=Captain+tim&neighborhoo"\
      "d=june+1+%26+2+jubli%27s&state_id=BI&county_fips=15045"

您首先是如何获得此阵列的?它是来自第三方api还是来自生成它的另一个代码?我从cookie中得到一个字符串。我正在用“&”拆分该字符串。所以我得到了这个数组。现在我们知道了源代码,您是否尝试使用
cookies[:locSlug]
cookies[:neighborary]
来访问这些cookies?关于等号的事情还不清楚,但如果您进行编辑以显示所需的输出,可能是这样的。@Harshavardhanreddy“我从cookie中获得了一个字符串”–原始字符串的外观如何?
?=
很可爱。locSlug值已损坏。应该是“june-1-&2-jubli's_Captain-tim_BI”的格式嗨,先生,我正在很多地方设置cookie值。我无法将正确转义的字符串写入cookie。以及我从API中获得的值。@Harshavardhanreddy我想是时候重构代码并使其正确;-)是的,先生。你是对的。我正在努力提高性能