2017-01-09 84 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; 
});