Javascript 展平一组对象和字符串

Javascript 展平一组对象和字符串,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我有这样一个对象数组: const arr = [ { realEstateBasicInfoResDto: { type: "Detached house", kind: "Class01" }, assetId: "1", realEstateAddressInfoResDto: { county: null, municipal

我有这样一个对象数组:

const arr  = [  {
        realEstateBasicInfoResDto: {
            type: "Detached house",
            kind: "Class01"
        },
        assetId: "1",
        realEstateAddressInfoResDto: {
            county: null,
            municipality: null,
            municipalitySection: null,
            address: "Attica, N. Ionia, Iolkou",
            addrNumberFrom: 8,
            addrNumberTo: 0,
            addrLetterFrom: null,
            addrLetterTo: null,
            addressSec: null,
            addrSecLetterFrom: null,
            addrSecLetterTo: null,
            addrSecNumberFrom: 0,
            addrSecNumberTo: 0,
            postalCode: "1"
        },
        realEstateEstimationValuesResDtos: [ ]
    },

    {
        realEstateBasicInfoResDto: {
            type: "Detached house",
            kind: "Class01"
        },
        assetId: "11",
        realEstateAddressInfoResDto: {
            county: null,
            municipality: null,
            municipalitySection: null,
            address: "Attica, N. Ionia, Iolkou",
            addrNumberFrom: 8,
            addrNumberTo: 0,
            addrLetterFrom: null,
            addrLetterTo: null,
            addressSec: null,
            addrSecLetterFrom: null,
            addrSecLetterTo: null,
            addrSecNumberFrom: 0,
            addrSecNumberTo: 0,
            postalCode: "2"
        },
        realEstateEstimationValuesResDtos: [ ]
    },
]
我希望输出只包含属性,而不包含对象键。
我正在使用这个函数:

const flatten = o =>
  Object.keys(o).reduce(
    (obj, key) =>
      typeof o[key] === "object" && o[key] !== null
        ? { ...obj, ...flatten(o[key]) }
        : { ...obj, [key]: o[key] },
    {}
  );
它似乎工作得很好,但在我的对象数组中得到的结果是:

flatten(arr) = 
{
        addrLetterFrom: null
        addrLetterTo: null
        addrNumberFrom: 8
        addrNumberTo: 0
        addrSecLetterFrom: null
        addrSecLetterTo: null
        addrSecNumberFrom: 0
        addrSecNumberTo: 0
        address: "Attica, N. Ionia, Iolkou"
        addressSec: null
        assetId: "3"
        county: null
        kind: "Class01"
        municipality: null
        municipalitySection: null
        postalCode: null
        type: "Detached house"    
}

它实际上只返回最后一个展平的对象。我想返回两个对象都展平的数组。我错过了什么?谢谢。

您的
展平
函数处理单个对象,因此您需要使用
array.map()
迭代数组,并将展平函数应用于每个对象:

const arr=[{“realestatedbasicinfresdto”:{“类型”:“独立房屋”,“种类”:“Class01”},“资产净值”:“1”,“realestatedaddressinforesdto”:{“县”:空,“市镇”:空,“市政部门”:空,“地址”:“Attica,N.Ionia,Iolkou”,“addrNumberFrom”:8,“addrNumberTo”:0,“addrLetterFrom”:空,“addrLetterTo”:空,“addersece”:空,“addrsecleterfrom”:null,“addrSecLetterTo”:null,“addrSecNumberFrom”:0,“addrSecNumberTo”:0,“postalCode”:“1”},“RealEstateTestEstationValuesResdtos”:[]},{“RealEstateBasicinforestto”:{“类型”:“独立房屋”,“种类”:“Class01”},“资产”:“11”,“RealEstateAddressionInforesdto”:{“县”:null,“市”:null,“市政部门”:null,“地址”:“阿提卡,北阿利提奥尼亚,伊奥库”,“addrNumberFrom”:8,“addrNumberTo”:0,“addrLetterFrom”:null,“addrLetterTo”:null,“addressSec”:null,“AddrCletterFrom”:null,“AddrSetterTo”:null,“AddrSextorFrom”:0,“postalCode”:“2”},“RealestateEstationValuesResdTos”:[]}];
常数展平=o=>
对象。键(o)。减少(
(obj,键)=>
o[key]=“object”&&o[key]!==null的类型?
{……obj,
…展平(o[键])
} :
{……obj,
[键]:o[键]
}, {}
);
常数结果=arr.map(展平);

console.log(result);
你能发布一个好的输出示例吗?如果你这样做了,你很快就会得到答案:)你数组中的对象似乎只有字符串和数字作为值,但对象也可以有对象和数组作为值。你想把它们也展平吗?