【发布时间】:2019-03-29 16:39:37
【问题描述】:
我有一个这样的对象数组:
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"
}
它实际上只返回最后一个展平的对象。我想返回一个两个对象都展平的数组。我错过了什么?谢谢。
【问题讨论】:
-
您能否发布一个示例输出 以进行衡量?如果你这样做,你会很快得到答案:)
-
您的数组中的对象似乎只有字符串和数字作为值,但对象也可以将对象和数组作为值。你也想要那些扁平的吗?
标签: javascript arrays reactjs