Javascript 复制对象内部的属性

Javascript copy properties inside an object

我有一个对象如下;

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

现在我想将所有这些属性复制到“记录”内的“行”属性。所以,它应该看起来像;

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

虽然我可以使用

record.row = record;

我要的是

  1. 属性 prop1/prop2/prop3 在将它们复制到 record.row
  2. 后作为“记录”的直接子项删除
  3. 上面的语句最终也重复了我想避免的行内的属性(某种循环的东西)

如何才能同时满足这两个条件? P.S: "propX" 都是简单的字符串值,我可以 deep/shallow copy

这个呢

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

record = {
    prop1: 'X',
    prop2: 'Y',
    prop3: 'Z'
}
record = Object.assign({},{row:record})

你可以这样做:

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

record = { ...record, row: record }

对于旧版本的节点,您可以改为这样做:

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

解决方案一

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

方案二

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

方案三:

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

record = {row:{...record}}