Javascript 使用jQuery将对象转换为另一个对象
我在JavaScript文件中得到了一个结果,我想将其转换为另一个对象Javascript 使用jQuery将对象转换为另一个对象,javascript,jquery,Javascript,Jquery,我在JavaScript文件中得到了一个结果,我想将其转换为另一个对象 var source = [] // Replace with the initalization of your source array var destination = []; for (var i = 0; i < source.length; i++) { var node = source[i]; for (var j = 0; j < node.Elements.length;
var source = [] // Replace with the initalization of your source array
var destination = [];
for (var i = 0; i < source.length; i++) {
var node = source[i];
for (var j = 0; j < node.Elements.length; j++) {
var subNode = node.Elements[j];
newNode = $.extend(subNode, node);
delete newNode["Elements"];
destination.push(newNode);
}
}
我的原始结果
[
{
"SName": "Set1",
"Elements": [
{
"Id": "3",
"Name": "Name1"
},
{
"Id": "5",
"Name": "Name2"
}
]
},
{
"SName": "Set2",
"Elements": [
{
"Id": "7",
"Name": "Name3"
},
{
"Id": "8",
"Name": "Name4"
}
]
}
]
使用jQuery或JavaScript将其转换为对象数组。我怎样才能做到这一点
[
{
"SName": "Set1",
"Id": 3,
"Name": "Name1"
},
{
"SName": "Set1",
"Id": 5,
"Name": "Name2"
},
{
"SName": "Set2",
"Id": 7,
"Name": "Name3"
},
{
"SName": "Set2",
"Id": 8,
"Name": "Name4"
}
]
您可以迭代数组、元素和属性,构建新对象并将其推送到结果集
var数组=[{“SName”:“Set1”,“Elements”:[{“Id”:“3”,“Name”:“Name1”},{“Id”:“5”,“Name”:“Name2”}],{“SName”:“Set2”,“Elements”:[{“Id”:“7”,“Name”:“Name3”},{“Id”:“8”,“Name”:“Name4”}],
结果=[];
array.forEach(函数(a){
a、 元素。forEach(函数(b){
var o={SName:a.SName};
对象。键(b)。forEach(函数(k){
o[k]=b[k];
});
结果:推(o);
});
});
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以迭代数组、元素和属性,构建新对象并将其推送到结果集
var数组=[{“SName”:“Set1”,“Elements”:[{“Id”:“3”,“Name”:“Name1”},{“Id”:“5”,“Name”:“Name2”}],{“SName”:“Set2”,“Elements”:[{“Id”:“7”,“Name”:“Name3”},{“Id”:“8”,“Name”:“Name4”}],
结果=[];
array.forEach(函数(a){
a、 元素。forEach(函数(b){
var o={SName:a.SName};
对象。键(b)。forEach(函数(k){
o[k]=b[k];
});
结果:推(o);
});
});
控制台日志(结果)代码>
.as控制台包装{max height:100%!important;top:0;}
您可以使用reduce()
、forEach()
和Object.assign()
var数据=[{
“SName”:“Set1”,
“要素”:[{
“Id”:“3”,
“名称”:“名称1”
}, {
“Id”:“5”,
“名称”:“名称2”
}]
}, {
“SName”:“Set2”,
“要素”:[{
“Id”:“7”,
“名称”:“名称3”
}, {
“Id”:“8”,
“名称”:“名称4”
}]
}]
var结果=数据.reduce(函数(r,e){
e、 元素。forEach(函数(o){
r、 push(Object.assign({SName:e.SName},o))
})
返回r;
}, [])
console.log(result)
您可以使用reduce()
、forEach()
和Object.assign()
var数据=[{
“SName”:“Set1”,
“要素”:[{
“Id”:“3”,
“名称”:“名称1”
}, {
“Id”:“5”,
“名称”:“名称2”
}]
}, {
“SName”:“Set2”,
“要素”:[{
“Id”:“7”,
“名称”:“名称3”
}, {
“Id”:“8”,
“名称”:“名称4”
}]
}]
var结果=数据.reduce(函数(r,e){
e、 元素。forEach(函数(o){
r、 push(Object.assign({SName:e.SName},o))
})
返回r;
}, [])
console.log(结果)
这里的关键是reduce
功能。我们正在做的是创建一个全新的数组,通过循环遍历外部数组的每个值。我们不断地使用从内部数组映射的值来启用新数组
这里的关键是reduce
功能。我们正在做的是创建一个全新的数组,通过循环遍历外部数组的每个值。我们不断地使用从内部数组映射的值来启用新数组。下面是使用jQuery的解决方案,下面是JSFIDLE:
我希望你知道所有的密钥名称,这样做就不会有问题了
var json = [
{
"SName": "Set1",
"Elements": [
{
"Id": "3",
"Name": "Name1"
},
{
"Id": "5",
"Name": "Name2"
}
]
},
{
"SName": "Set2",
"Elements": [
{
"Id": "7",
"Name": "Name3"
},
{
"Id": "8",
"Name": "Name4"
}
]
}
]
var newJSON = []
$(json).each(function(index,value){
$(value.Elements).each(function(index1,value1){
newJSON.push({"SName":value.SName,"Id":value1.Id,"Name":value1.Name})
})
})
alert(JSON.stringify(newJSON))
下面是代码,它所做的是首先循环JSON,然后循环其元素,然后将其推送到新数组下面是使用jQuery的解决方案,下面是JSFIDLE:
我希望你知道所有的密钥名称,这样做就不会有问题了
var json = [
{
"SName": "Set1",
"Elements": [
{
"Id": "3",
"Name": "Name1"
},
{
"Id": "5",
"Name": "Name2"
}
]
},
{
"SName": "Set2",
"Elements": [
{
"Id": "7",
"Name": "Name3"
},
{
"Id": "8",
"Name": "Name4"
}
]
}
]
var newJSON = []
$(json).each(function(index,value){
$(value.Elements).each(function(index1,value1){
newJSON.push({"SName":value.SName,"Id":value1.Id,"Name":value1.Name})
})
})
alert(JSON.stringify(newJSON))
下面是代码,它所做的是首先循环JSON,然后循环其元素,然后将其推送到新数组您可以使用$.extend方法,该方法允许您在与另一个对象合并时创建对象的副本
var source = [] // Replace with the initalization of your source array
var destination = [];
for (var i = 0; i < source.length; i++) {
var node = source[i];
for (var j = 0; j < node.Elements.length; j++) {
var subNode = node.Elements[j];
newNode = $.extend(subNode, node);
delete newNode["Elements"];
destination.push(newNode);
}
}
var source=[]//替换为源数组的初始化
var destination=[];
对于(变量i=0;i
您可以运行代码。您可以使用$.extend方法,该方法允许您在与另一个对象合并时创建对象的副本
var source = [] // Replace with the initalization of your source array
var destination = [];
for (var i = 0; i < source.length; i++) {
var node = source[i];
for (var j = 0; j < node.Elements.length; j++) {
var subNode = node.Elements[j];
newNode = $.extend(subNode, node);
delete newNode["Elements"];
destination.push(newNode);
}
}
var source=[]//替换为源数组的初始化
var destination=[];
对于(变量i=0;i
您可以运行代码。只需循环值并重新对齐即可。您不需要使用jQuery,只需循环值并重新对齐即可。您不需要使用jQuery,只是为了获取信息。要支持IE,请使用$.extend而不是Object.assign.仅供参考。要支持IE,请使用$.extend而不是Object.assign.仅供参考。要支持IE,请使用$.extend而不是Object.assign.仅供参考。要支持IE,请使用$.extend而不是Object.assign.仅供参考。要支持IE,请使用$.extend而不是Object.assign。$
是jquery的一部分,不是吗?仅供参考。要支持IE,请使用$.extend而不是Object.assign。$
是jquery的一部分,不是吗?