我正在尝试将数组项中的元素添加到 JSON,但我很难将元素传递到 JSON。
这是我的代码:
var j = {
"Root": {
"a": "1800,1200,3100",
"b": "1500,1999,2001",
"c": "40,60,50",
"d": "this is not needed",
"e": "nor this one"
}
};
var root = j.Root,
l = root.a.split(",").length,
hash = ["a", "b", "c"];
for (var i = 0; i < l; i++) {
for (var x = 0; x < hash.length; x++) {
root['row_' + i] = {
"a": root.a.split(",")[i],
"b": root.b.split(",")[i],
"c": root.c.split(",")[i] // I don't want to do this for each key
};
}
}
for (var x = 0; x < hash.length; x++) {
delete root[hash[x]];
}
console.log(JSON.stringify(j));
我的代码可以正常工作,但我正在寻找使用数组元素的正确方法,因为我将拥有的不仅仅是 a、b、c
PS:不是所有的key都会用到
最佳答案
您可以使用 Object.keys
,它会在 hash
变量中为您提供对象的键。然后,您的代码将动态检测 Root
对象中所有可能的键:
var j = {
"Root": {
"a": "1800,1200,3100",
"b": "1500,1999,2001",
"c": "40,60,50",
"d": "152,199,21",
"e": "15,19,200"
}
};
var root = j.Root,
l = root.a.split(",").length,
hash = ["a", "b", "c"];
for (var i = 0; i < l; i++) {
var obj = {};
for (var x = 0; x < hash.length; x++) {
obj[hash[x]] = root[hash[x]].split(",")[i];
}
root['row_' + i] = obj;
}
for (var x = 0; x < hash.length; x++) {
delete root[hash[x]];
}
console.log(root);
console.log(JSON.stringify(j));
关于javascript - 从数组中添加 json 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49731279/