【问题标题】:AS3 or PHP - How to filter an array with multiple values from another array?AS3 或 PHP - 如何从另一个数组中过滤具有多个值的数组?
【发布时间】:2013-02-22 13:21:42
【问题描述】:

谁能帮我解决这个问题。想象一下,您有一个列出葡萄酒的索引数组,每种葡萄酒都有名称、制造商、原产国、价格和年份。

var wines:Array = new Array(); 
wines = [ 

{winename:"Baron des Lougres", country:"France", year:"2008", price:"20.00", manufacture:"Le Yeats"},

{winename:"Barefoot Sauvignon", country:"USA", year:"2012", price:"12.00", manufacture:"Big Vines"},

]

显然索引数组/数据库中有更多葡萄酒。

我希望用户能够提交例如制造商年份,然后选择多个国家/地区(智利、阿根廷、美国)。我必须用一系列选定的国家/地区过滤 wines 数组。我知道如何在 if 过滤中使用 && 对具有设定值的主数组进行排序,但我不知道如何将它与动态值一起使用。国家排序可能有 1 到 10 个或更多值,它的长度是动态的。我想在数组/数据库中有超过 2000 种葡萄酒,所以我希望尽可能有一个简洁的代码 CPU 精简版。

返回的值将仅来自所选国家/地区。是否可以使用数组作为条件编写 IF 语句,还是必须以其他方式编写?

类似:

for (var i:uint = 0; i < wines.length; i++) 
    if (wines.year == selected_year 
&& wines.manufacture == selected_manufacture
&& wines[i].country == selected_countries_array)
{
    trace(wines[i].name);
    }
}

更新

下面的答案,来自 bwroga 有效。它看起来与上面的代码有点不同,但这只是因为我在他回答后编辑了这个问题。但是他的代码, indexOf 部分工作完美。谢谢你。我尝试了以下方法,它奏效了! :)

for (var i:uint = 0; i < wines.length; i++) 
    if (wines.year == selected_year 
&& wines.manufacture == selected_manufacture
&& selected_countries_array.indexOf(wines[i].country != -1)
{
    trace(wines[i].name);
    }
}

【问题讨论】:

  • 商品(葡萄酒)从何而来?如果它是一个数据库,那是过滤结果的正确位置。此外,您提供的唯一代码行不足以为您提供好的解决方案。
  • 嗨 Veseliq。我按照您的建议添加了更多信息。

标签: php arrays actionscript-3 sorting filter


【解决方案1】:

你可以这样做:

// Actionscript
if(year == selected_year && 
   manufacture == selected_manufacture && 
   selected_counties_array.indexOf(country) !== -1
){
//action
}

如果国家在 selected_countries_array 中,indexOf 将返回国家在数组中的索引。如果不在数组中,则返回-1。

在 PHP 中,你可以这样做:

// Php
if($year == $selected_year && 
   $manufacture == $selected_manufacture && 
   in_array($country, $selected_counties)
){
//action
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2017-01-24
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    相关资源
    最近更新 更多