roh*_*han 2 arrays actionscript actionscript-3 find-occurrences
我想计算ActionScript 3.0中数组中出现的次数.说我有
var item:Array = ["apples", "oranges", "grapes", "oranges", "apples", "grapes"];
Run Code Online (Sandbox Code Playgroud)
如何让它显示匹配字符串的数量?例如,结果:apples = 2,oranges = 2等.
我从另一个类似的问题得到了这个代码:
private function getCount(fruitArray:Array, fruitName:String):int {
var count:int=0;
for (var i:int=0; i<fruitArray.length; i++) {
if(fruitArray[i].toLowerCase()==fruitName.toLowerCase()) {
count++;
}
}
return count;
}
var fruit:Array = ["apples", "oranges", "grapes", "oranges", "apples", "grapes"];
var appleCount=getCount(fruit, "apples"); //returns 2
var grapeCount=getCount(fruit, "grapes"); //returns 2
var orangeCount=getCount(fruit, "oranges"); //returns 2
Run Code Online (Sandbox Code Playgroud)
在这段代码中,如果你想得到说"苹果"的数量.您需要为每个项目设置变量(var appleCount = getCount(fruit,"apples")).但是,如果你有成百上千的水果名称,就不可能为每一个水果写下新的变量.
我是AS3的新手,请原谅我.请在代码中包含明确的注释,因为我想了解代码.
fsb*_*ain 10
var item:Array = ["apples", "oranges", "grapes", "oranges", "apples", "grapes"];
//write the count number of occurrences of each string into the map {fruitName:count}
var fruit:String;
var map:Object = {}; //create the empty object, that will hold the values of counters for each fruit, for example map["apples"] will holds the counter for "apples"
//iterate for each string in the array, and increase occurrence counter for this string by 1
for each(fruit in item)
{
//first encounter of fruit name, assign counter to 1
if(!map[fruit])
map[fruit] = 1;
//next encounter of fruit name, just increment the counter by 1
else
map[fruit]++;
}
//iterate by the map properties to trace the results
for(fruit in map)
{
trace(fruit, "=", map[fruit]);
}
Run Code Online (Sandbox Code Playgroud)
输出:
apples = 2
grapes = 2
oranges = 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2411 次 |
| 最近记录: |