Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays 在AS3数组中查找序列_Arrays_Actionscript 3_Apache Flex - Fatal编程技术网

Arrays 在AS3数组中查找序列

Arrays 在AS3数组中查找序列,arrays,actionscript-3,apache-flex,Arrays,Actionscript 3,Apache Flex,有人知道如何找到数组中的序列数吗 例如,我的数组是: var numbers:Array = new Array(banana, banana, apple, banana, banana); 我需要找到的是: *“香蕉”的序列有多少次 *以及每个序列的长度 为了得到以下结果,我要做什么: 2,1,2(2个香蕉,1个苹果,2个香蕉) 我试过做while循环,但我想我错过了什么 一个简短的例子将非常感谢 thanxvar-prev:String=null; var q:int=0; 变量结果:数

有人知道如何找到数组中的序列数吗

例如,我的数组是:

var numbers:Array = new Array(banana, banana, apple, banana, banana);
我需要找到的是: *“香蕉”的序列有多少次 *以及每个序列的长度

为了得到以下结果,我要做什么: 2,1,2(2个香蕉,1个苹果,2个香蕉)

我试过做while循环,但我想我错过了什么

一个简短的例子将非常感谢

thanx
var-prev:String=null;
var q:int=0;
变量结果:数组=新数组();
对于(var i:int=0;i0)结果,推送(q);
q=1;
prev=数字[i];
}
else++q;
}
如果(q>0)结果,推送(q);

也就是说,假设香蕉等是字符串(可能是上面的输入错误?)。修改为其他类型的对象很简单

实际上,您只想知道索引n处的字符串是否等于索引n+1处的字符串

var targetIndex:int = numbers.length - 1;
var results:Array = [1];
var resultsIndex:int = 0;
for(var n:int = 0; n < targetIndex; n++) {
    if(numbers[n] == numbers[n+1]) {
        results[resultsIndex]++;
    } else {
        results[++resultsIndex] = 1;
    }
}
trace(results.join(','));
var targetIndex:int=numbers.length-1;
var结果:数组=[1];
var resultsIndex:int=0;
对于(变量n:int=0;n
在您没有定义香蕉和苹果的问题中,无论如何,我会使用
映射
字典
来存储键/值对,键是要计数的字符串/对象,值是数组中对象出现的计数器

var objectsCounter:Dictionary = new Dictionary();

for (var key:String in numbers) 
{
    if ( objectsCounter[key] )
        objectsCounter[key] = objectsCounter[key] + 1;
    else 
        objectsCounter[key] = 1;
}
这样,您可以在字典中存储任何类型

编辑:


我相信这就是你想要的:

    var array:Array = [
        "banana", "banana",
        "apple",
        "banana", "banana", "banana"
    ];

    var sequences:Array = findSequences(array, "banana");

    trace("sequences:", sequences); // prints "sequences: 2,3"
以及:


香蕉和苹果是什么对象?它们显然不是字符串。请共享您尝试的代码。也作为参考;您可以使用问题编辑器中的花括号按钮格式化代码。这会让你的问题,尤其是代码,更容易阅读。嘿,你说得对。我的问题不够清楚。这里有一些解释:香蕉和苹果是弦。我只想找到香蕉的序列:例如,对于这个数组:var numbers:array=new数组(banana,banana,apple,banana,banana);我想得到“2,2”。再次感谢您的帮助!嘿,太多了!我的问题不够清楚。我想知道——如果我只想返回香蕉的序列——我该怎么办?如果((q>0)和((prev==“香蕉”))应该这样做。
var banana:int = 1;
var apple:int = 2;
sequencesInArray([banana, banana, apple, banana, banana]); //returns: [2, 1, 2]
var objectsCounter:Dictionary = new Dictionary();

for (var key:String in numbers) 
{
    if ( objectsCounter[key] )
        objectsCounter[key] = objectsCounter[key] + 1;
    else 
        objectsCounter[key] = 1;
}
for (var key:String in objectsCounter) 
{
    // iterates through each object key
}

for each (var value:Number in objectsCounter) 
{
    // iterates through each value
}
    var array:Array = [
        "banana", "banana",
        "apple",
        "banana", "banana", "banana"
    ];

    var sequences:Array = findSequences(array, "banana");

    trace("sequences:", sequences); // prints "sequences: 2,3"
private function findSequences(array:Array, searchElement:*):Array
{
    var sequences:Array = [];
    var currentSequence:int = 0;

    for each (var element:* in array) {
        if (element == searchElement) {
            currentSequence++;

        } else if (currentSequence > 0) {
            sequences.push(currentSequence);
            currentSequence = 0;
        }
    }

    if (currentSequence > 0) {
        sequences.push(currentSequence);
    }

    return sequences;
}