Сериализация многомерного массива - PullRequest
0 голосов
/ 23 октября 2009
function source_of (array, up_to_dimension) {

  // Your implementation

}

source_of([1, [2, [3]]], 0) == '[1, ?]'
source_of([1, [2, [3]]], 1) == '[1, [2, ?]]'
source_of([1, [2, [3]]], 2) == '[1, [2, [3]]]'

source_of([532, 94, [13, [41, 0]], [], 49], 0) == '[532, 94, ?, ?, 49]'

У меня огромный многомерный массив, и я хочу сериализовать его в строку. up_to_dimension аргумент обязательный .

Функция должна работать как минимум в последних версиях Firefox, Opera, Safari и IE. Производительность является ключевым здесь.

Ответы [ 2 ]

3 голосов
/ 23 октября 2009
function source_of(array, up_to_dimension) {
    if (up_to_dimension < 0) {
        return "?";
    }

    var items = [];

    for (var i in array) {
        if (array[i].constructor == Array) {
            items.push(source_of(array[i], up_to_dimension - 1));
        }
        else {
            items.push(array[i]);
        }
    }

    return "[" + items.join(", ") + "]";
}
1 голос
/ 23 октября 2009

что-то вроде

function to_source(a, limit) {
    if(!a.sort)
        return a;
    else if(!limit)
        return "?";
    var b = [];
    for(var i in a)
        b.push(to_source(a[i], limit - 1));
    return "[" + b.join(",") + "]";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...