Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   as1, сравнить массивы (http://www.flasher.ru/forum/showthread.php?t=70467)

KidsKilla 16.10.2005 03:36

Код:

var a = [1,2,3,4];
var b = [1,2,3,5,6]
var lost_data = a.concat();
var get_data = b.concat();
for(var i=a.length; --i>=0;){
        for(var j=b.length; --j>=0;){
        if (a[i] == b[j]) {
            lost_data.splice(i, 1);
            get_data.splice(j, 1);
            break;
        }
        }
}
trace(["lost[",lost_data,"] get[", get_data,"]"]);
trace([a," : ",b])


Mnilionic 16.10.2005 03:42

KidsKilla, прекрасно! А почему в моей конструкции не работает?
было бы мило с вашей стороны растолковать мне.

KidsKilla 16.10.2005 04:03

Цитата:

Сообщение от Mnilionic
KidsKilla, прекрасно! А почему в моей конструкции не работает?
было бы мило с вашей стороны растолковать мне.

не знаю что там было не так, но совершенно точно i1-- было лишним.
по сути я скопировал твой же скрипт =)

KidsKilla 16.10.2005 04:05

кстати, этот вариант будет работать с глюками. нужен другой...

iNils 16.10.2005 04:08

old_data = ["a", "b", "c", "d"];
new_data = ["c", "d", "e"];
lost_data = String (old_data).split (",");
get_data = String (new_data).split (",");
for (i1 = 0; i1 < lost_data.length; i1++) {
for (i2 = 0; i2 < get_data.length; i2++) {
if (lost_data[i1] == get_data[i2]) {
lost_data.splice (i1, 1);
get_data.splice (i2, 1);
i1--;
break;
}
}
}
trace (old_data);
trace (new_data);
trace (lost_data);
trace (get_data);

KidsKilla 16.10.2005 19:49

Код:

function compare(a,b){
        function killDuplicates(arr) {
                var uniqArr = [];
                var i = arr.length;
                var f = false;
                function fnd(a, el) {
                        var i = a.length;
                        while (--i>=0) if (a[i] == el) return true;
                        return false;
                }
                while (--i>=0) {
                        for (var j = uniqArr.length; --j>=0; ) if (fnd(uniqArr, arr[i])) f = true;
                        if (f) {
                                f = false;
                                continue;
                        }
                        uniqArr[uniqArr.length] = arr[i];
                        f = false;
                }
                return uniqArr;
        }
        var lost_data = killDuplicates(a);
        var get_data = killDuplicates(b);
        for (var i=lost_data.length; --i;) {
                for (var j=get_data.length; --j;) {
                        if (lost_data[i] == get_data[j]) {
                                lost_data.splice(i, 1);
                                get_data.splice(j, 1);
                        }
                }
        }
        return {lost:lost_data, added:get_data};
}



var result = compare([1, 1, 1, 1, 2, 3, 4, 4, 4, 4], [1, 2, 3, 5, 6]);
trace("lost: "+result.lost);
trace("added: "+result.added);


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

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