2017-01-09 88 views
1
xls.each(function(v, k) { 
    oid = v.OrderID;   
    xlsindexed[oid] = v;//This gives me a struct with 9999 empty values. 
}); 

我想獲取一個數組/結構,每個元素命名爲orderID,每個元素的值都是具有訂單詳細信息的結構體。如何動態命名結構元素?

我已經試過各種

xlsindexed[oid] = v; 
xlsindexed.oid = v; 
xlsindexed.#oid# = v; 

還組合,嘗試:

xlsindexed[oid] = 'blah'; 

,仍然可以得到結構與9999 [未定義的數組元素] S 我xls變量有大約30個元素。

+1

聽起來像你的問題是什麼'V'是,而不是你分配給結構的方式。 ('struct [var]'是正確的方法) –

+0

也看到了,也。請參閱編輯。 –

+0

同樣,我不認爲'v'就是你認爲的那樣。不管它是什麼,它似乎都沒有OrderID屬性。這不只是一個關鍵? –

回答

1

(從評論...)

這給了我9999個空值

一個結構技術上可以得到一個陣列有許多不確定的因素。出現這種情況的原因是,當xlsindexed未定義,CF必須猜測什麼類型的對象的此:

xlsindexed[ someNumericValue ] = v; 

..應該產生:陣列或結構。顯然,它看到數值並猜測你想要一個數組。所以它創建並初始化一個包含很多元素的數組。

如果您事先聲明xlsindexed作爲結構,它將消除歧義並生成預期結果。

// initialize as a structure 
xlsindexed = {}; 
xls.each(function(v, k) { 
    xlsindexed[v.OrderID] = v; 
});