如何将带有对象的数组中的数据动态添加到嵌套数组中?
Posted
技术标签:
【中文标题】如何将带有对象的数组中的数据动态添加到嵌套数组中?【英文标题】:How to dynamically add data from an array with objects to a nested array? 【发布时间】:2021-10-22 03:21:24 【问题描述】:我有这组动态获取的数据 - This is the data I dynamically get
我的问题是如何从键、模式和标签中获取值并将它们放入这样的嵌套对象中 - how should the nested object look like。
我当前的代码是
let mergeTagsObj = ;
const merg = function(arr)
const propertyDataMap = arr.map(x => x.key);
propertyDataMap.forEach(x =>
mergeTagsObj[x] =
);
console.log(mergeTagsObj);
// console.log(object);
;
merg(displayArr)
displayArr 具有我动态获取的数据,我映射每个数据以获取密钥,这样我就可以为对象属性命名。但在那之后我需要得到另外2个(模式和标签)并将它放在mergeTagsObj中;
ex: mergeTagsObj =
firstName:
name:label
value:pattern
,
...
;
【问题讨论】:
你可以试试这样的:let tags = arr.map(x => Object.assign(, ([x.key]: name: x.label, value: x.pattern)))
【参考方案1】:
您可以在 forEach 中添加模式和标签以及转换数据可能需要的任何其他逻辑。
const data = [key: 'firstName', pattern: "firstName", label: "First Name",
key: 'lastName', pattern: "lastName", label: "Last Name",
key: 'unsubscribeLink', pattern: "unsubscribeLink", label: "Unsubscribe Link"
]
const transformDataToTagsObject = (dData) =>
const dynamicData = ;
dData.forEach((currentData, index) =>
const currentKey = currentData.key
const name = currentData.label
let value = currentData.pattern
if(currentData.key === 'unsubscribeLink')
value = `<a href='$value'>Unsubscribe</a>`
dynamicData[currentKey] =
name,
value
)
const tagsObject =
tags: dynamicData
return tagsObject;
const finalResults = transformDataToTagsObject(data)
console.log(finalResults)
【讨论】:
谢谢,这对我很有帮助:)【参考方案2】:不是最优雅的解决方案,但我认为这应该可行。不需要先创建键数组,只需遍历对象的 arr 即可。
const merg = function(arr)
arr.forEach(x =>
mergeTagsObj[x.key] = ;
mergeTagsObj[x.key]['name'] = x.label;
mergeTagsObj[x.key]['value'] = x.pattern
);
console.log(mergeTagsObj);
// console.log(object);
;
【讨论】:
您的回答也确实有帮助。谢谢你回答我的问题!我很感激 【参考方案3】:// Given
const data = [
key: "firstName", pattern: "firstName", label: "First Name",
key: "unsubscribeLink", pattern: "unsubscribeLink", label: "Unsubscribe Link"
];
const tagsObject = data.reduce((obj, item) =>
const key = item.key;
const name = item.label;
let value = item.pattern;
if (key === 'unsubscribeLink') value = '<a href="unsubscribeLink">Unsubscribe</a>';
return ...obj, [key]: name, value;
, );
console.log(tagsObject);
【讨论】:
非常感谢您回答我的问题!谢谢以上是关于如何将带有对象的数组中的数据动态添加到嵌套数组中?的主要内容,如果未能解决你的问题,请参考以下文章