ActionScript 3.0 - 获取数组中相同值的计数

Posted

技术标签:

【中文标题】ActionScript 3.0 - 获取数组中相同值的计数【英文标题】:ActionScript 3.0 - get the count of the same value in an array 【发布时间】:2018-03-09 23:22:03 【问题描述】:

在 actionscript3 中工作并遇到数组问题。 我有一个包含数字的数组,[1,2,3,4,2,1,2,3,4]

如何计算一个值的个数,比如数组。 count function ["4"] //2

可以创建一个 for 循环,但像函数一样可以编写更简单的代码。

for(var k:uint = 0; k < array.length; k++)

    if (array[k] =="4")
    
        newarray.push(array[k]);
    


trace(array.length);

感谢您的帮助!

【问题讨论】:

如果你想创建一个count函数,确保它需要2个函数参数(第一个是目标array,第二个是要计算的)。该函数应返回一个整数 counted 数量。了解如何递增变量(使用++)。然后只需执行if (array[k] == 4) count++ 即可计算4 发生了多少次。如果您尝试这些建议中的某些内容,我会检查您的代码。 【参考方案1】:
var list:Array = [1,2,3,4,2,1,2,3,4];
function findInArray(value:*, arr:Array):Array 
    var res:Array = [];
    for(var i:uint = 0; i < arr.length; i++)
        if(arr[i] === value) res.push(i);
    return res;

trace("all indices of 4 in array: ", findInArray(4, list));
trace("total 4s found: ", findInArray(4, list).length);

【讨论】:

提问者想要计数X 在数组中出现的次数。例如,如果 X2,那么在发布的数组中,您会看到 2 被提及 3 次。如何获得这个数字 3?问题是…… 直到问题被编辑才清楚,我仍然不确定提问者是否真的只想要总数。但无论如何我编辑了我的答案【参考方案2】:
var totalCount:uint = 0;
for(var k:uint = 0; k < array.length; k++)

    if (array[k] =="4")
    
        totalCount++
    


trace(totalCount);

【讨论】:

【参考方案3】:

我知道它已经回答了,但仍然。如果您只需要计数,for..each 循环会更快。

function countItems(value:*, list:Array):int

    var result:int;

    for each (var aValue:* in list)
        if (aValue == value)
            result++;

    return result;

【讨论】:

没有大括号?耻辱! @Brian 是的。为了READABILITY,我总是选择尽可能紧凑格式良好的脚本。只要性能良好,没有什么比可读性更好了。在您的项目中拥有数百个 500 多行的类 - 您也将开始珍惜这些行。 我不知道可读性,但为了普通的可读性,我实际上更喜欢大括号。此外,这是一个非常便宜的错误预防措施:总是大括号代码!当你在result++; 之后添加一行时,如果你有大括号,你保证它包含在循环中;否则你会得到一个偷偷摸摸的错误。

以上是关于ActionScript 3.0 - 获取数组中相同值的计数的主要内容,如果未能解决你的问题,请参考以下文章

如何在Actionscript 3.0中获取数组的所有排列?

在 ActionScript (3.0) 中干净地合并两个数组?

ActionScript 3.0 随机化数组、显示数字并拼接该数字

如何从 Actionscript 3.0 中的数组 B 中的数组 A 中删除元素?

[ActionScript 3.0] 获取随机颜色

Actionscript 3.0 - 检测已放置在舞台上的多个实例并将它们添加到数组中