将对象转换为数组

时间:2014-02-25 09:12:37

标签: javascript

我想按如下方式创建一个JSON对象:

    {
        "PROMO": {
            "ID": 1,
            "NAME": "PROMO ONE",
            "BUNDLES": {
                "0": {
                    "BUNDLE": {
                        "BUNDLE_ID": 1,
                        "BUNDLE_NAME": "BUNDLE ONE"
                    },
                    "ARTICLE": {
                        "ARTICLE_IDS": "550,398,475"
                    }
                },
                "1": {
                    "BUNDLE": {
                        "BUNDLE_ID": 1,
                        "BUNDLE_NAME": "BUNDLE ONE"                    
                    },
                    "ARTICLE": {
                        "ARTICLE_IDS": "125,250,323"
                    }
                }
            }
        }
    }

我想要做的是,将BUNDLEARTICLE对象合并,然后推入BUNDLES数组。我尝试了许多方法但没有成功组合两个对象。

例如,我尝试了以下内容:

var BUNDLES = [];
var BUNDLE = {};
var ARTICLE = {};

BUNDLE.BUNDLE_ID = 1;
BUNDLE.BUNDLE_NAME = "BUNDLE ONE";
ARTICLE.ARTICLE_IDS = "550,398,475";

// here, I want to combine ARTICLE and BUNDLE then push into array
BUNDLES.push(BUNDLE)

1 个答案:

答案 0 :(得分:0)

这会做你的。可能有一个更简洁的方式,但这就是我想要的。

http://jsfiddle.net/558BN/

var json =    {
        "PROMO": {
            "ID": 1,
            "NAME": "PROMO ONE",
            "BUNDLES": {
                "0": {
                    "BUNDLE": {
                        "BUNDLE_ID": 1,
                        "BUNDLE_NAME": "BUNDLE ONE"
                    },
                    "ARTICLE": {
                        "ARTICLE_IDS": "550,398,475"
                    }
                },
                "1": {
                    "BUNDLE": {
                        "BUNDLE_ID": 1,
                        "BUNDLE_NAME": "BUNDLE ONE"                    
                    },
                    "ARTICLE": {
                        "ARTICLE_IDS": "125,250,323"
                    }
                }
            }
        }
    }

var array = [];
for(var i in json.PROMO.BUNDLES){
    var obj = {};
    for(var j in json.PROMO.BUNDLES[i]){
        obj[j] = json.PROMO.BUNDLES[i][j]
        //console.log(j + " " + obj[j]);   
    }
    array.push(obj);
}
json.PROMO.BUNDLES = array;
console.log(json.PROMO.BUNDLES);