对象内的Javascript复制属性

对象内的Javascript复制属性,javascript,properties,javascript-objects,object-properties,Javascript,Properties,Javascript Objects,Object Properties,我有一个目标如下 record = { prop1: 'X', prop2: 'Y', prop3: 'Z' } 现在,我希望将所有这些属性复制到“记录”中的“行”属性。所以,它应该像, record = { row: { prop1: 'X', prop2: 'Y', prop3: 'Z' } } 而我可以使用 record.row = record; 我想要的是 在record.row内复制属性pr

我有一个目标如下

record = {
    prop1: 'X',
    prop2: 'Y',
    prop3: 'Z'
}
现在,我希望将所有这些属性复制到“记录”中的“行”属性。所以,它应该像,

record = {
    row: {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
    }
}
而我可以使用

record.row = record;
我想要的是

  • 在record.row内复制属性prop1/prop2/prop3后,将其作为“record”的直接子级删除
  • 上面的语句最后还重复了我想要避免的行内的属性(类似于循环)
  • 如何在满足这两个条件的情况下实现这一点? 另外:“propX”都是简单的字符串值,我可以使用深/浅复制

    这个怎么样

    记录={
    建议1:‘X’,
    建议2:‘Y’,
    建议三:“Z”
    }
    记录={行:{…记录}}
    

    记录={
    建议1:‘X’,
    建议2:‘Y’,
    建议三:“Z”
    }
    record=Object.assign({},{row:record})
    
    这个怎么样

    记录={
    建议1:‘X’,
    建议2:‘Y’,
    建议三:“Z”
    }
    记录={行:{…记录}}
    

    记录={
    建议1:‘X’,
    建议2:‘Y’,
    建议三:“Z”
    }
    record=Object.assign({},{row:record})
    
    您可以执行以下操作:

    let record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
    }
    
    record = { ...record, row: record }
    
    对于旧版本的node,您可以改为执行以下操作:

    var record = {
      prop1: 'X',
      prop2: 'Y',
      prop3: 'Z'
    };
    
    
    let newRecord = {}
    Object.assign(newRecord, {
      row: record
    });
    
    // console.log(newRecord)
    
    你可以做:

    let record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
    }
    
    record = { ...record, row: record }
    
    对于旧版本的node,您可以改为执行以下操作:

    var record = {
      prop1: 'X',
      prop2: 'Y',
      prop3: 'Z'
    };
    
    
    let newRecord = {}
    Object.assign(newRecord, {
      row: record
    });
    
    // console.log(newRecord)
    

    这能解决问题吗?我假设您希望覆盖原始变量

    record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
    }
    
    var tempRecord = {record:record}
    
    record = tempRecord
    

    这能解决问题吗?我假设您希望覆盖原始变量

    record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
    }
    
    var tempRecord = {record:record}
    
    record = tempRecord
    
    解决方案-1

    var record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
    }
    let newRecord = {row:{}}
    Object.keys(record).forEach(key=> newRecord.row[key] = record[key]);
    
    
    解决方案2

      var record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
      }
      let newRecord = {};
    
      for (let[key,value] of Object.entries(record)) {
        if (!newRecord['row']) {
          newRecord = {
            row: {}
          };
        }
        newRecord["row"][key] = value;
      }
    
    解决方案3:

    var record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
    }
    
    record = {row:{...record}}
    
    
    解决方案-1

    var record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
    }
    let newRecord = {row:{}}
    Object.keys(record).forEach(key=> newRecord.row[key] = record[key]);
    
    
    解决方案2

      var record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
      }
      let newRecord = {};
    
      for (let[key,value] of Object.entries(record)) {
        if (!newRecord['row']) {
          newRecord = {
            row: {}
          };
        }
        newRecord["row"][key] = value;
      }
    
    解决方案3:

    var record = {
        prop1: 'X',
        prop2: 'Y',
        prop3: 'Z'
    }
    
    record = {row:{...record}}
    
    


    嘿…谢谢…我在我的Ember项目中使用这个…出于某种原因,这个语句在生成时失败,表示意外的令牌(在…)我确实添加了Babel作为依赖项。您的节点版本是什么?我的节点版本是10.xYes…这样可以工作…Object.assign(记录,{row:record});然而,最初的问题仍然存在,即我希望复制的属性作为“记录”的直接子项删除嘿…谢谢…我在我的Ember项目中使用它…出于某种原因,此语句无法生成,表示意外标记(在…)我确实添加了Babel作为依赖项。您的节点版本是什么?我的节点版本是10.xYes…这样可以工作……Object.assign(记录,{row:record});然而,最初的问题仍然存在,即我希望复制的属性作为“记录”的直接子项删除嘿…谢谢…我在我的余烬项目中使用这个…出于某种原因,此语句无法生成,表示意外标记(在…),而且我确实有Babel作为依赖项added@testndtv再查一遍?添加另一种方法。此方法不会给出生成错误…但我不认为最终/更新的“记录”对象是expected@testndtv抱歉,我忘了分配,请再次检查。嘿…谢谢…我正在我的余烬项目中使用它…出于某种原因,此语句无法生成,并显示意外标记(在…)我也有巴别塔作为依赖added@testndtv再查一遍?添加另一种方法。此方法不会给出生成错误…但我不认为最终/更新的“记录”对象是expected@testndtv对不起,我忘了作业,请再检查一遍。