0

我有一个对象如下;

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. 上面的语句也最终重复了我想避免的行内的属性(某种圆形的东西)

我怎样才能满足这两个条件?PS:“propX”都是简单的字符串值,我可以用深/浅拷贝

4

4 回答 4

1

那这个呢

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

或者

record = {
    prop1: 'X',
    prop2: 'Y',
    prop3: 'Z'
}
record = Object.assign({},{row:record})
于 2020-06-25T06:13:01.013 回答
1

你可以做:

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)
于 2020-06-25T06:14:10.153 回答
0

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

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

var tempRecord = {record:record}

record = tempRecord
于 2020-06-25T08:51:21.797 回答
0

解决方案-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}}

于 2020-06-29T05:06:41.140 回答