as3 сравнивая два массива и возвращая индекс - PullRequest
0 голосов
/ 18 февраля 2012

Я хочу создать функцию, которая сравнивает 2 массива и возвращает индексы найденных элементов.если для примера мои массивы:

var distances:Array = new Array (0,275,217,385,275,0,251);
var selectedDist:Array = new Array (217,275,251);

я бы хотел, чтобы он возвратил 2,4,6

Ответы [ 2 ]

1 голос
/ 18 февраля 2012

Попробуйте следующее:

var indices:Array = [];

for each(var distance:int in selectedDist) {
    var index:int = distances.indexOf(distance);
    if (index >= 0) {
        indices.push(index);
    }
}

return indices;
0 голосов
/ 18 февраля 2012

Предположим, вы всегда сравниваете массив selectedDist с массивом расстояний , я бы сделал это:

protected function compareArrays(arr1:Array, arr2:Array):Array
{
  var matches:Array = new Array();

  for(var x:int=0; x < arr2.length; x++) {
    /*
     * indexOf returns -1 id the element is not found in the array
     * http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#indexOf()
     * but you have to grab the lastIndexOf 275, as requested...
     */
     if (arr1.indexOf(arr2[x] > -1))
       matches.push(arr1.lastIndexOf(arr2[x]));
    }

    return matches;
}
...