如何优雅转换对象内嵌的对象数组为属性值数组?
更简洁的实现方案
方案一:解构时直接处理
可以在复制对象的同时,直接对目标数组做转换,省去多余的中间变量:
const processedObj = { ...obj1, operationIds: obj1.operationIds.map(item => item.id), ratingIds: obj1.ratingIds.map(item => item.id), timestamp: "AAAAAAAGJ6c=", estimatedUtilReconciliationApplies: true };
方案二:提取复用函数(适合多数组转换场景)
如果后续还有类似的对象数组需要提取id,可以封装通用函数避免重复逻辑:
const extractIds = (arr: Array<{ id: number }>) => arr.map(item => item.id); const processedObj = { ...obj1, operationIds: extractIds(obj1.operationIds), ratingIds: extractIds(obj1.ratingIds), timestamp: "AAAAAAAGJ6c=", estimatedUtilReconciliationApplies: true };
补充说明
你当前代码里将转换后的数组赋值给operatingEnvironmentIds和thrustRatingIds,但预期结果是保留operationIds和ratingIds字段,以上方案按预期结果实现。如果确实需要替换字段名,只需修改对应键名即可,比如:
const processedObj = { ...obj1, operatingEnvironmentIds: extractIds(obj1.operationIds), thrustRatingIds: extractIds(obj1.ratingIds), // 若需移除原字段可添加这两行 operationIds: undefined, ratingIds: undefined, timestamp: "AAAAAAAGJ6c=", estimatedUtilReconciliationApplies: true };
内容的提问来源于stack exchange,提问作者Rabee Qabaha
相关产品推荐
相关产品推荐

