And*_*edt 2 javascript json angularjs
我有两个JSON对象,我想创建一个对象,使用Angular或纯JavaScript(没有jQuery).Angular.extend似乎没有得到我想要的东西,而是做了更多的合并.
{
"field1-1": 1,
"field1-2": 2,
"field1-3": 3,
"field1-4": "four",
"field1-5":
{
"field1-1-1": 5.1,
"field1-1-2": 5.2
}
}
Run Code Online (Sandbox Code Playgroud)
和
{
"field2-1": 21,
"field2-2": 22,
"field2-3": "three",
"field2-4":
{
"field2-1-1": 4.1,
"field2-1-2": 4.2
}
}
Run Code Online (Sandbox Code Playgroud)
我希望最终结果是:
{
"field1-1": 1,
"field1-2": 2,
"field1-3": 3,
"field1-4": "four",
"field1-5":
{
"field1-1-1": 5.1,
"field1-1-2": 5.2
}
},
{
"field2-1": 21,
"field2-2": 22,
"field2-3": "three",
"field2-4":
{
"field2-1-1": 4.1,
"field2-1-2": 4.2
}
}
Run Code Online (Sandbox Code Playgroud)
所以你想要一个数组:
var array = [object1, object2];
Run Code Online (Sandbox Code Playgroud)
var object1 = { "field1-1": 1, "field1-2": 2, "field1-3": 3, "field1-4": "four", "field1-5": { "field1-1-1": 5.1, "field1-1-2": 5.2 } },
object2 = { "field2-1": 21, "field2-2": 22, "field2-3": "three", "field2-4": { "field2-1-1": 4.1, "field2-1-2": 4.2 } },
array = [object1, object2];
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');Run Code Online (Sandbox Code Playgroud)
如果您想获得单个对象,则可以使用此提议.
它使用对象迭代数组,然后遍历对象的键.原始对象的值将分配给新对象的相应属性.
var object1 = { "field1-1": 1, "field1-2": 2, "field1-3": 3, "field1-4": "four", "field1-5": { "field1-1-1": 5.1, "field1-1-2": 5.2 } },
object2 = { "field2-1": 21, "field2-2": 22, "field2-3": "three", "field2-4": { "field2-1-1": 4.1, "field2-1-2": 4.2 } },
object = function (array) {
var o = {};
array.forEach(function (a) {
Object.keys(a).forEach(function (k) {
o[k] = a[k];
});
});
return o;
}([object1, object2]);
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');Run Code Online (Sandbox Code Playgroud)
除非我弄错了,否则你想要的结果看起来像一个包含两个对象的简单数组:
var result = [objectOne, objectTwo];
Run Code Online (Sandbox Code Playgroud)
这与想要将两个对象连接(或合并)到一个对象(这是什么angular.extend或Object.assign将要做什么)完全不同.