Javascript 从对象动态创建JSON数组
我有一个对象Javascript 从对象动态创建JSON数组,javascript,jquery,json,Javascript,Jquery,Json,我有一个对象A,如下所示 var A = { "1": [ "1_1", "1_2", "1_3" ], "2": [ "2_1", "2_2" ] }; 需要使用js动态构建新阵列。假设 对象一个键应该映射到数组AA的属性文本,值应该映射到子对象,如下所示 var AA = [ { "text": "1", "state": "open", "children": [ { "text": "1_1
A
,如下所示
var A = {
"1": [ "1_1", "1_2", "1_3" ],
"2": [ "2_1", "2_2" ]
};
需要使用js动态构建新阵列。假设对象一个键应该映射到数组AA的属性文本,值应该映射到子对象,如下所示
var AA = [
{
"text": "1",
"state": "open",
"children": [
{ "text": "1_1" },
{ "text": "1_2" },
{ "text": "1_3" }
]
},
{
"text": "2",
"state": "open",
"children": [
{ "text": "2_1" },
{ "text": "2_2" }
]
}
];
这是我的功能,但它没有按预期工作。有人能帮忙吗
function constructJSONArr() {
var A = {
"1": [ "1_1", "1_2", "1_3" ],
"2": [ "2_1", "2_2" ]
};
for (var key in A) {
var tempArr = [];
tempArr.push(key);
for (var i = 0; i < key.length; i++) {
return {
'text': key,
'state': 'closed',
'children': A[key].map(function(child) {
return {
'text': child
};
})
}
}
}
}
函数构造函数jsonarr(){
变量A={
"1": [ "1_1", "1_2", "1_3" ],
"2": [ "2_1", "2_2" ]
};
for(A中的var键){
var tempArr=[];
tempArr.push(键);
对于(变量i=0;ireturn
会导致函数返回第一个键对象。要解决这个问题,您需要创建对象并将它们推入arr。您可以在Array.map()
中自由返回,因为每次迭代都会调用一个函数
固定解决方案:
重复使用。获取键
。将新对象推入arr
。使用键
作为文本
属性、状态
和子项
。要创建子对象,请通过键从原始对象获取数组,并使用生成子对象。返回arr
var A={
"1": ["1_1", "1_2", "1_3"],
"2": ["2_1", "2_2"]
};
函数构造函数JSONARR(A){
var-arr=[];
for(A中的var键){
arr.push({
文本:键,
声明:“已关闭”,
子项:A[key].map(函数(t){
返回{
文本:t
};
})
});
}
返回arr;
}
var结果=ConstructionJSONARR(A);
控制台日志(结果)
您可以使用Object.keys()
迭代对象,并使用Array.map
创建新数组
var A={
"1": ["1_1", "1_2", "1_3"],
"2": ["2_1", "2_2"]
};
var transformed=Object.keys(A).map(key=>{
返回{
文本:键,
声明:“开放”,
子项:一个[key].map(值=>{
返回{
文本:值
};
})
};
});
console.log(已转换)代码>什么不起作用?你有什么错误?