合并并序列化javascript对象
我想合并嵌套的javascript对象。当我知道物体的长度是一时,我很简单。但是由于长度增加了,我需要一种动态的方式来合并合并并序列化javascript对象,javascript,angularjs,Javascript,Angularjs,我想合并嵌套的javascript对象。当我知道物体的长度是一时,我很简单。但是由于长度增加了,我需要一种动态的方式来合并地址键并序列化我的对象 var old = {account: "100000", address: {city: "LONDON", companyName: "Test IQUE", country: "UK", postalCode: "SW1A 2AA",}, met
地址键并序列化我的对象
var old = {account: "100000", address: {city: "LONDON", companyName: "Test IQUE", country: "UK", postalCode: "SW1A 2AA",}, meterName: "DM9"}
当lenght 1岁的时候,这对我很有效
var new = {
'account' : "100000",
'address' : "LONDON, UK"
'companyName' : "Test IQUE",
'postalCode' : "SW1A 2AA",
'meterName' : "DM90"
},
{
'account' : "1000001",
'address' : "LONDON, UK"
'companyName' : "Test IQUE",
'postalCode' : "SW1A 2AA",
'meterName' : "DM90"
};
实际上,我需要序列化嵌套的地址
对象并将其合并为一个。由于每个对象的结构都是相同的,所以我考虑使用一个for-each循环,它可以将地址值合并为一个。您可以使用如下内容:
var old = {
account: "100000",
address: {
city: "LONDON",
companyName: "Test IQUE",
country: "UK",
postalCode: "SW1A 2AA",
},
meterName: "DM9"
};
let flattenObject = (obj) => {
let flat = {};
for (const [key, value] of Object.entries(obj)) {
if (typeof value === 'object' && value !== null) {
for (const [subkey, subvalue] of Object.entries(value)) {
typeof flat[subkey] === 'undefined' ?
flat[subkey] = subvalue :
Array.isArray(flat[subkey]) ?
flat[subkey].push(subvalue) :
flat[subkey] = [flat[subkey], subvalue]
}
} else {
flat = {...flat, ...{[key]: value}};
}
}
return flat;
}
var flatted = flattenObject(old);
console.log(flatted);
如果您询问如何从addresss对象获取完整地址字符串,可以使用以下代码:
“地址”:Object.values($scope.userDetails.address).join(',')代码>
Object.values()
函数将把地址
对象更改为数组
.join
方法将把这个数组中的所有元素连接成一个字符串。这些元素将由作为参数传递的字符串分隔(,
,在本例中)。您可以使用lodash库:
@看
_.assign(对象[源])
_.与(对象、其他、定制者)合并
您是否询问如何将{city:“…”,country:“…”,…}
转换为字符串…?看起来您正在使用angularjs
,但您正在标记javascript。angularjs用于向对象添加数据/创建新的展平对象。但是我的问题是关于JavaScription,你有嵌套属性的例子吗?请同时添加想要的结果。@NinaScholz编辑了我的问题以消除歧义
function Foo() {
this.a = 1;
}
function Bar() {
this.c = 3;
}
Foo.prototype.b = 2;
Bar.prototype.d = 4;
_.assign({ 'a': 0 }, new Foo, new Bar);
// => { 'a': 1, 'c': 3 }
function customizer(objValue, srcValue) {
if (_.isArray(objValue)) {
return objValue.concat(srcValue);
}
}
var object = { 'a': [1], 'b': [2] };
var other = { 'a': [3], 'b': [4] };
_.mergeWith(object, other, customizer);
// => { 'a': [1, 3], 'b': [2, 4] }