将json推入不同数组的更好方法

时间:2014-05-27 01:44:18

标签: javascript arrays json for-loop

我想将我的json推入不同的阵列。

在我的for循环中使用if函数之前它工作正常,但我想知道是否有更简单的方法,因为如果我有很多数组,我将在循环中有很多if函数。

我的json的一部分

[{"FROM_CURRENCY":"TWD","TO_CURRENCY":"AUD","CONVERSION_RATE":".0359"}
,{"FROM_CURRENCY":"HKD","TO_CURRENCY":"AUD","CONVERSION_RATE":".1393"}
,{"FROM_CURRENCY":"USD","TO_CURRENCY":"CNY","CONVERSION_RATE":"6.2448"}
,{"FROM_CURRENCY":"TWD","TO_CURRENCY":"CNY","CONVERSION_RATE":".2073"}
,{"FROM_CURRENCY":"EUR","TO_CURRENCY":"JPY","CONVERSION_RATE":"139.2115"}
,{"FROM_CURRENCY":"CNY","TO_CURRENCY":"TWD","CONVERSION_RATE":"4.8229"},

现在我的循环内容

if(json[i].TO_CURRENCY == 'TWD'){
        arrayApp.TWD.push(json[i]);}

if(json[i].TO_CURRENCY == 'HKD'){
        arrayApp.HKD.push(json[i]);}

因为我有很多不同的货币我必须写很多

这是我在思考但似乎无法运作

var setArrayCurr='';
for ( i in json ) { 
    setArrayCurr=json[i].TO_CURRENCY

    arrayApp.setArrayCurr.push(json[i]);

} //end of loop

2 个答案:

答案 0 :(得分:2)

试试这个:

var arrayApp = {};
for (i in json) {
    var arrayKey = json[i].TO_CURRENCY

    var array = arrayApp[arrayKey];
    //if first time for the key, then create an empty erray for the key.
    if (!array) {
        array = arrayApp[arrayKey] = [];
    }

    array.push(json[i]);

} //end of loop

最终结果将是按货币分组的多个数组:

{
    "AWD": [ /* all jsons with currency 'AWD' */ ],
    "TWD": [ /* all jsons with currency 'TWD' */ ],
    "HKD": [ /* all jsons with currency 'HKD' */ ]
    ...
}

答案 1 :(得分:0)

这是因为您已将setArrayCurr设置为字符串而非数组。

这意味着每次声明setArrayCurr时,它都会更改其上下文,但不会添加或分类。

var setArrayCurr = [];
for(var i in json){
 setArrayCurr[json[i].TO_CURRENCY] =json[i];
}

这应该将你的json数据放到setArrayCurr数组中的每个部分。