2016-02-08 3 views
-2

Мне нужно нажать массив в jquery. Я не могу понять, как правильно форматировать весь синтаксис javascript. Можете ли вы поделиться лучшим решением по этому вопросу.Синтаксис Javascript внутри массива

Результат должен быть таким.

<script type="text/javascript"> 
rrApiOnReady.push(function() { 
    try { 
     rrApi.order({ 
      transaction: <transaction_id>, 
      items: [ 
       { id: <product_id>, qnt: <quantity>, price: <price>}, 
       { id: <product_id>, qnt: <quantity>, price: <price> } 
      ] 
     }); 
    } catch(e) {} 
}) 
</script> 

Я определяю переменный для «order.cart.items», а затем пытаюсь перечислить массив с «пунктами [я] .product.id», как и в учебных пособиях:

var items = order.cart.items; 
for (var i in items) { ... } 

Но это Безразлично Не работайте для меня, чтобы поместить его в определенное форматирование выше. Он возвращает ошибку Uncaught SyntaxError: Неожиданный токен для.

rrApiOnReady.push(function() { 
      try { 
      rrApi.order({ 
      transaction: page.orderNumber, 
      items: [ 
       for (var j in items) { 
       { id: items[j].product.id, qnt: items[j].quantity, price: items[j].product.price }, 
       } 
         ] 
        }); 
        } catch(e) {} 
       }); 

Не могли бы вы направить меня, как правильно форматировать массив в таком случае? Заранее спасибо!

+1

Вы не можете просто положить 'for' петли * внутри * объявление массива/объекта ! Вам нужно будет построить структуру данных * перед * вызовом 'rrApi.order()'. –

ответ

3

Вы не можете использовать петлю for внутри большей структуры. JavaScript for Loops to - это не выражения, которые можно оценить для значения. Они основаны на императивном программировании, а не на функциональном программировании.

Вместо этого, вы должны использовать map, который делает возвращает новую коллекцию на основе вашей коллекции ввода:

rrApi.order({ 
    transaction: page.orderNumber, 
    items: items.map(function (item) { 
    return { id: item.product.id, qnt: item.quantity, price: item.product.price } 
    }) 
}) 
+0

См. [Массивные понимания] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Array_comprehensions). Был удален из проекта ES6 и включен только 'for ... of' вместо' for ... in' loops. Но может быть вновь введен в будущую версию спецификации. – Oriol

+0

@Oriol Примечание большой ** Нестандартный. Не используйте! ** – meagar

+0

Большое спасибо! Он отлично работал для меня! – jim

Смежные вопросы