Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Подсчет кол-ва Элементов в массиве до определенного элемента (http://www.flasher.ru/forum/showthread.php?t=186646)

danone1991 06.11.2012 19:48

Подсчет кол-ва Элементов в массиве до определенного элемента
 
Всем Привет, прошу помощи.
НЕ могу никак придумать как подсчитать кол-во элементов в массиве до определенного, например слово "name"?
Есть массив там в рандомном порядке значения необходимо Подсчитать сколько элементов до "name" и сколько до след "name".

GBee 06.11.2012 20:01

узнать индекс элемента name.

Добавлено через 36 секунд
Но это работает при определенных условиях

alatar 06.11.2012 20:30

Код AS3:

var arr:Array = ["a", "b", "c", "d", "name", "e", "f", "name", "g", "h", "name", "x", "y", "z"];
var first:int = arr.indexOf("name");
var next:int = arr.indexOf("name", first);
var last:int = arr.lastIndexOf("last");


wapmaster 06.11.2012 21:01

Код AS3:

private function init(e:Event = null):void 
{
        var arr:Array = ["a", "b", "c", "d", "s", "g", "name", "e", "f", "name"];
 
        var sss:Array = search(arr, "name", 0, []);
        trace(sss);
}
 
private function search($array:Array, $item:String, $startPosition:int, $results:Array):Array
{
        if ($startPosition + 1 < $array.length)
        {
                var count:int = 0;
                var stopPosition:int = $array.indexOf($item, $startPosition + 1)
                for (var i:int = $startPosition; i < stopPosition; i++ )
                        count++;
 
                var result:Object = { count:count, position:stopPosition }
                $results.push(result);
 
                if ($array.indexOf($item, $startPosition) != $array.lastIndexOf($item))
                        search($array, $item, stopPosition, $results);
        }
        return $results;
}

Как вариант можно так.
Возвращает массив элементы которого являются последовательно количество символов до "name" от начала до первого, от первого до второго и так далее. Трейс массива "sss" (извините за такое название, писал на скорую руку) вернет 6,3.

danone1991 06.11.2012 21:10

Код AS3:

var next:int = arr.indexOf("name", first + 1);

Спасибо. вставил first + 1, иначе не считает. Работает только я забыл указать один критерий отсчет должен вестись с предыдущего "name". т.е на сколько элементов он удален.

alatar 06.11.2012 21:38

Цитата:

т.е на сколько элементов он удален.
next - first


Часовой пояс GMT +4, время: 13:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.