Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
169 views
in Technique[技术] by (71.8m points)

javascript - Converting an object to an array

I tried by using Object.keys() to convert the object

var obj1={
    "jan": {
        "COAL": "25"
    },
    "feb": {
        "ROM": "50",
        "WASTE": "55"
    },
    "april": {
        "COAL": "60"
    }
}

to

var obj2=[
    {
        "month": "jan",
        "product": "COAL",
        "quantity": "25"
    },
    {
        "month": "feb",
        "product": "ROM",
        "quantity": "50"
    },
    {
        "month": "feb",
        "product": "WASTE",
        "quantity": "55"
    },
    {
        "month": "april",
        "product": "COAL",
        "quantity": "60"
    }
]

but failed in the middle as I'm not able to calculate the properties say for example in "feb" there are two products "ROM" and "WASTE", but this can go upto 3 or 4. Can anyone please suggest possible solution for this problem?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This will do:

var res = []
for(i in obj1){
 var rowObj = obj1[i];
 for(j in rowObj){
     var newObj = {'month' : i, 'product' : j, 'quantity' : rowObj[j]}
     res.push(newObj);
 }
}
console.log(res);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...