Steam trade-offer-manager получить информацию о предметах сократить

Я пытаюсь создать новый проект. Это будет торговый бот для веб-сайта, теперь, чтобы хранить полученные мной предметы в моей базе данных, я хотел бы, чтобы некоторая информация отправлялась с каждым предметом (имя, asseid, tradeid,...). Следующий код работает.

offers.on('receivedOfferChanged', function (offer, oldState) {
logger.info(offer.partner.getSteam3RenderedID() + " Offer #" + offer.id + " changed: " + TradeOfferManager.getStateName(oldState) + " -> " + TradeOfferManager.getStateName(offer.state));

// Alert us when we accept an offer
if (offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
    offer.getReceivedItems(function (err, items) {
        if (err) {
            logger.error("Couldn't get received items: " + err);
        } else {
            var names = items.map(function(item) {
                return item.name;
            });
            var assetids = items.map(function(item) { 
                return item.assetid; 
            });
            // Log a comma-separated list of items received
            logger.info("Received: " + names + " " + assetids.join(', '));
        }
    });
}
});`

Но дело в том, есть ли способ сократить следующий код:

var names = items.map(function(item) {
            return item.name;
        });
        var assetids = items.map(function(item) { 
            return item.assetid; 
        });

Итак, он получает имя элемента, актив, ... из массива и сохраняет их в отдельных переменных?


person Jochem    schedule 02.11.2015    source источник


Ответы (1)


Для добавления значений в оба массива в одном цикле. Пытаться:

var names = [],
    assetids = [];

items.forEach(function(item) {
    assetids.push(item.assetid); 
    names.push(item.name); 
});
person Alexandr Lazarev    schedule 02.11.2015
comment
Это сработало как шарм, спасибо за быстрый ответ! - person Jochem; 02.11.2015