Javascript 使用jQuery将对象转换为另一个对象

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;

我在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; 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的一部分,不是吗?