JavaScript-处理和重构JSON不起作用
我试图处理一个json文件并创建一个新文件,但它不起作用 旧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
[
{
"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星!非常感谢!:)