【问题标题】:add another object to another and loop data into it将另一个对象添加到另一个对象并将数据循环到其中
【发布时间】:2022-11-26 16:12:49
【问题描述】:

如何通过组合数组(在示例对象中)进行映射,并使用数据填充 objToAdd 对象的组合数组。

const sample = {
  lin: {
"clo": [
  {
    "mode": 103889,
    "id": 164703
  },
  {
    "mode": 103888,
    "id": 164704
  }
]
 }
}

const objToAdd = {
clo: []
};

【问题讨论】:

  • objToAdd .compositions = sample .links .composition 是否满足您的需求?

标签: javascript reactjs algorithm object


【解决方案1】:

所以你想用 links<sample object 的 compositions 数组中的数据填充 objToAdd 对象的 compositions 数组:

const compositionsObject = (sample['links'])['compositions'];
objToAdd['compositions'].push(compositionsObject);

首先要从样本中获取成分数据,您应该“捕获”链接对象:样本['链接']。然后您需要获取 compositions 对象中的数据,这就是我们包装 (sample['links']) 并从具有键 'compositions' 的对象中获取数据的原因

组合对象有以下数据:

[{"modelId":103889,"id":164703},{"modelId":103888,"id":164704}] 

简短的摘要: object[key1] => 获取key1的值

(object[key1])[key2] => 获取对象内的 key2 的值​​,该对象以“key1”键作为键。

【讨论】:

    【解决方案2】:

    如果您没有静态数据但有动态数据,则可以执行以下解决方案:

    const sample = {
      links: {
    "compositions": [
      {
        "modelId": 103889,
        "id": 164703
      },
      {
        "modelId": 103888,
        "id": 164704
      }
    ]
     }
    }
    
    const objToAdd = {
       compositions: []
    };
    
    const keyToMap = 'compositions';
    const keyToAdd = 'compositions';
    
    function findArray(object){
        if(object.hasOwnProperty(keyToMap))
            return object;
    
        for(var i=0; i<Object.keys(object).length; i++){
            if(typeof object[Object.keys(object)[i]] == "object"){
                var o = findArray(object[Object.keys(object)[i]]);
                if(o != null)
                    return o;
            }
        }
        return null;
    }
    
    const compositionsObject = findArray(sample);
    
    objToAdd[keyToAdd].push(compositionsObject[Object.keys(compositionsObject)[0]]);
    
    console.log('Result', objToAdd)

    您可以将要映射的键的名称保留在“keyToMapp”常量中,并将要将此数据添加到的键命名为“keyToAdd”。

    添加一个递归函数 findArray,它的一个参数是您映射的对象,在本例中是样本对象。第一个条件是“最终”结果,我们询问样本对象是否具有 keyToMap,在本例中为“组合”。如果找到具有此键的对象,则返回该对象。 如果它没有找到具有该键的对象,它会遍历对象键,直到找到一个对象(typeof 对象)并使用找到的新对象重试(重新输入函数 = 递归)。

    在 compositionsObject 中,我们保留使用 key = keyToMap 找到的对象。 之后,我们使用 key = keyToAdd 将它的值推送到对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多