base64_decode части массива объектов jQuery - PullRequest
2 голосов
/ 02 ноября 2011

Я ищу способ декодирования части моего массива объектов с помощью декодера jQuery base64 для jPlayer с использованием ttwMusicPlayer.

Массив:

var myPlaylist = [
{
mp3: 'aHR0cDovL2xvY2FsaG9zdC90aGVtZWxpdC9yb2NrbnJvbGxhL2ZpbGVzLzIwMTEvMTAvMDEtQnJpZGdlLUJ1cm5pbmcubXAz',
title: 'Bridge Burning',
artist: 'Rock N' Rolla',
cover: 'http://localhost/themelit/rocknrolla/files/2011/10/folder-300x300.jpg',
},{
mp3: 'aHR0cDovL2xvY2FsaG9zdC90aGVtZWxpdC9yb2NrbnJvbGxhL2ZpbGVzLzIwMTEvMTAvMDItUm9wZS5tcDM=',
title: 'Rope',
artist: 'Rock N' Rolla',
cover: 'http://localhost/themelit/rocknrolla/files/2011/10/folder-300x300.jpg',
},
];

Игрок:

$j('#audio-player').ttwMusicPlayer(myPlaylist, {
        autoPlay: false, 
        description: albumdesc,
        jPlayer: {
            swfPath: swfpath,
            solution: 'html, flash',
            supplied: 'mp3',
        }
    });

Думая о создании функции для анализа myPlaylist как:

function maybe_decode(theObject) {
$j.each(theObject, function(value, key){
    //console.log( $j.base64Decode(key.mp3) );
    if( key.mp3 )
        return $j.base64Decode( key.mp3 );
    else
        return key;
});

}

Точно не работает, нужно сохранить массив, но декодировать значение ключа mp3.

Мысли

UPDATE:

Вроде это работает с этим внутри Maybe_decode ()

var Values = [];
$j.each(theObject, function(idx, obj) { 
    $j.each(obj, function(key, value) {
        if( key == 'mp3' )
            value = $j.base64Decode( value );
        Values.push(key + ": " + value);
        //console.log(key + ": " + value);
    });
});
console.log(Values);
return Values;

Единственная проблема заключается в том, что он сбрасывает массив из нескольких индексов (в данном случае 2) в один массив. Попытка вернуть его обратно в правильный формат массива ...

1 Ответ

1 голос
/ 02 ноября 2011

Если я правильно читаю ваш код ... ваш массив Values будет содержать строки, когда вы закончите. То, что вы, вероятно, должны делать, это примерно так:

var Values = [];
$j.each(theObject, function(idx, obj) { 
    var newVals = {};
    $j.each(obj, function(key, value) {
        if( key == 'mp3' )
            value = $j.base64Decode( value );
        newVals[key] = value;
    });
    Values.push(newVals);
});
console.log(Values);
return Values;

Это создает объект, используя вашу исходную структуру, и заполняет его необходимой информацией. Затем он помещает объект в массив Values, который должен быть в том же формате, что и исходный массив ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...