如何将带有对象的数组中的数据动态添加到嵌套数组中?

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);

【讨论】:

非常感谢您回答我的问题!谢谢

以上是关于如何将带有对象的数组中的数据动态添加到嵌套数组中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有嵌套数组的 JSON 对象映射到打字稿模型中?

如何使用 Node.js 和 Mongoose 将对象添加到嵌套数组

以更高的效率将嵌套数组中的值添加到唯一列表中

动态过滤嵌套javascript对象数组中的数据[重复]

如何从 React 中的嵌套对象数组中提取数据?

带有 C#Driver 的 MongoDB:如何过滤嵌套对象数组中的字段