javascript
  • arrays
  • json
  • 2013-10-10 37 views 0 likes 
    0

    我有一些javascript數組,我無法控制格式或變量名稱。我需要將其中的6個組合成一個json數組。我有它非常接近,但似乎無法讓它遍歷變量列表以及數組元素的數量。使用JavaScript將多個JavaScript數組合併成JSON

    很明顯,我不記得如何處理JS中的變量或迭代以及我以前可以真正使用的一些幫助。

    的軟件,其我需要解析輸出產生類似下面的東西:

    <script type="text/javascript"> 
        var orderNum = 'OrderNum-485'; 
        var orderSubTotal ='130.8'; 
        var orderTotal ='130.8'; 
        var numOfItems ='4'; 
        var items =new Array('Item Name 1','Item Name 2','Item Name 3','Item Name 4'); 
        var ids =new Array('item-id-1','item-id-2','item-id-3','item-id-4'); 
        var codes =new Array('ITEM-CODE-1','ITEM-CODE-2','ITEM-CODE-3','ITEM-CODE-4'); 
        var qtys =new Array('1','1','1','1'); 
        var price =new Array('12.95','46.7','1.2','69.95'); 
        var orderTax ='0'; 
        var orderShipping ='0'; 
        var appliedPromoIdList =''; 
        var coupon =''; 
        var storeId ='store_id'; 
        var activeShipPromotionCount =''; 
        var itemImages =new Array('http://image_url','http://image_url','http://image_url','http://image_url'); 
    </script> 
    

    凡爲我需要傳遞數據過於軟件所需的以下(作爲一個對象,我管理得到它使用字符串完成):

    [ 
         { 
          "item_id":"item-id-1", 
          "desc":"ITEM-CODE-1", 
          "amount":"12.95", 
          "quantity":"1", 
          "name":"Item Name 1", 
          "image": "http://image_url", 
         { 
          "item_id":"item-id-2", 
          "desc":"ITEM-CODE-2", 
          "amount":"46.7", 
          "quantity":"1", 
          "name":"Item Name 2", 
          "image": "http://image_url", 
        ] 
    

    這是我想出了:

    <script type="text/javascript"> 
        var orderId = orderNum; 
        var createItemObjects = function() { 
        var keys = new Array ("item_id","desc","amount","quantity","name","image"); 
        var yahooKeys = new Array ("ids","codes","price","qtys","items","itemImages"); 
        var item,cartItems = []; 
        var c = numOfItems; 
        var k = yahooKeys.length; 
        var i = 0; 
        item = {}; 
        for (; i < k; i++) { 
         var arrayName = yahooKeys[i].toString(); 
         var buffer = eval('' + arrayName); 
         item[keys[i]] = buffer[0] //Ideally this should be the full range of 0-3 so that you can see each of the 4 items. 
         document.write("<br />Loop: "+i); 
         cartItems.push(item); 
        } 
        return cartItems; 
    

    它產生正確格式化數據,但6個相同的元素的副本被緩衝的硬編碼值指示線沿線的

    +0

    現在是怎樣,你需要一個對象(在JS運行時)還是字符串(以JSON格式)? – Bergi

    +0

    我相信我需要一個對象。由於這是一項新功能,文檔相當薄弱。我已經將它解析爲一個JSON格式的字符串,它不會採取它。他們的示例代碼生成一個對象。 –

    回答

    1

    東西:

    function createItemObjects(items, ids, codes, qtys, prices, images) { 
        var check = items.length === ids.length && ids.length === codes.length && 
          qtys.length === codes.length && prices.length === images.length; 
        if(!check) throw 'Arrays do not match'; 
        var results = []; 
        for(var i = 0; i < items.length; ++i) { 
         results.push({ 
          item_id: ids[i], 
          desc: codes[i], 
          amount: parseFloat(prices[i]), 
          name: items[i], 
          quantity: qtys[i], 
          image: images[i] 
         }) 
        } 
        return results; 
    } 
    
    var data = generate(items, ids, codes, qtys, prices, itemImages); 
    var json_string = JSON.stringify(data); 
    
    +0

    我已經做了小幅修正,將價格切換回價格並更正了函數調用以反映函數名稱,但是我無法得到這個執行和monkeying與它沒有幫助。它掛起來試圖評估項目的長度,並出現null。試圖對它進行硬編碼,導致它掛在ID上。我將它粘貼到js小提琴,但他們不支持document.write:/ http://pastie.org/private/ryyr3xiosmjhtwtq5andg –

    +0

    沒關係,我錯誤地調用了該函數。我會繼續測試,並會很快返回。 –

    +1

    檢查http://jsfiddle.net/22KHW/它工作正常 – OneOfOne

    相關問題