JavaScript-处理和重构JSON不起作用

JavaScript-处理和重构JSON不起作用,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我试图处理一个json文件并创建一个新文件,但它不起作用 旧json的结构如下所示: [ { "3":{ "value":2 }, "4":{ "value":1 } }, { "3":{ "value":6 }, "4":{ "value":1 } }...an

我试图处理一个json文件并创建一个新文件,但它不起作用

旧json的结构如下所示:

[
    {
       "3":{
        "value":2
        },
        "4":{
            "value":1
        }
    },
    {
       "3":{
        "value":6
        },
        "4":{
            "value":1
        }
    }...and so on
{
    "0":{
        "0":[
            {
                "0":2
            }
        ],
        "1":[
            {
                "0":6
            }
        ]..and so on
    },
    "1":{
        "0":[
            {
              "0":1
            }
        ],
        "1":[
        {
            "0":1
        }
        ]..and so on
    }
}
我要做的是创建一个新的json对象,它只有两个对象0和1,每个对象中都有来自旧对象的索引3和索引4的值,看起来应该是这样的:

[
    {
       "3":{
        "value":2
        },
        "4":{
            "value":1
        }
    },
    {
       "3":{
        "value":6
        },
        "4":{
            "value":1
        }
    }...and so on
{
    "0":{
        "0":[
            {
                "0":2
            }
        ],
        "1":[
            {
                "0":6
            }
        ]..and so on
    },
    "1":{
        "0":[
            {
              "0":1
            }
        ],
        "1":[
        {
            "0":1
        }
        ]..and so on
    }
}
问题是,当我处理和烹调旧的json时,两个索引(0,1)的输出是相同的。我试图通过3和4循环,并将这些值分配到新数组中,但有些地方不太正确

代码的一部分:

//loop through the keysIndex
for (var c in keysIndex) {
    //the new json has to be 2 objects, hence the below
    newData[c] = {};
    var vallueArr = [];
    var newObj = {
        0: oldData[i][keysIndex[c]].value
    }
    vallueArr.push(newObj);
    objInNewData[entries] = vallueArr;
    //the problem is somehwere here, it is appending twice the same
    //objInNewData and not both 3 and 4 individually
    newData[c] = objInNewData;
}
这就是全部逻辑:

有人能帮我吗,因为我无法理解这一点:(


非常感谢

如上所述,使用对象键的索引不是一个好主意,因为Javascript中的对象没有定义的顺序。对于已排序的项目,我建议使用数组

var数据=[
{
“3”:{“值”:2},
“4”:{“值”:1}
}, {
“3”:{“值”:6},
“4”:{“值”:1}
}
],

keys=Object.keys(数据[0]),//你怎么知道,3映射到0,4映射到1?这个数据结构对我来说似乎很奇怪。既然你在对象键中使用数字,那么使用
[[{value:'foo'},{value:'foo2'}…],…]
?@NinaScholz会更有意义吗?因为我创建了一个带有(3和4)的数组它应该循环并映射它。它在plunker中。你知道如何解决这个问题吗?我只需要这样的输出不幸的是。@angular\u learner,你在每次迭代中生成数组
keysIndex
dynamic,你如何确保键总是相同的?或者是给定的?@NinaScholz,是的,是给定的e星!非常感谢!:)