gpt4 book ai didi

arrays - 计算数组中出现的次数

转载 作者:行者123 更新时间:2023-12-02 06:18:57 24 4
gpt4 key购买 nike

我想计算 ActionScript 3.0 数组中出现的次数。说我有

var item:Array = ["apples", "oranges", "grapes", "oranges", "apples", "grapes"];

如何让它显示匹配字符串的数量?例如,结果:apples = 2, oranges = 2 etc.

我从另一个类似的问题中得到这段代码:

    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

在这段代码中,如果你想得到说“苹果”的计数。您需要为每个项目设置变量 (var appleCount=getCount(fruit, "apples"))。但是,如果您有成百上千个水果名称,不可能为每个水果都写下新变量。

我是 AS3 的新手,所以请原谅我。请在您的代码中包含清晰的注释,因为我想理解代码。

最佳答案

    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]);
}

输出:

apples = 2
grapes = 2
oranges = 2

关于arrays - 计算数组中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16647556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com