繁体   English   中英

为 object 设置多个值

[英]Setting multiple values to a object

我想将多个对象设置为另一个 object 的多个值。 所以例如

let dataObj ={}
const personData = {name:"sai",age:"20"}
const ids = {id1:"1231455",id2:"425325232"}
dataObj.personData = personData;
dataObj.ids = ids
console.log(dataObj);

“personData”是 object,“ids”是 object。我将这 2 个对象设置为“dataObj”的 2 个值。 我想知道是否有更短的方法来实现这一点:

let dataObj ={}
const personData = {name:"sai",age:"20"}
const ids = {id1:"1231455",id2:"425325232"}
dataObj = personData;
dataObj = ids
console.log(dataObj);

我建议的替代方案的问题是它不会设置'dataObj' object 的'key'。它只会将'personData'和'ids'的值设置为dataObj的值。有什么办法可以实现吗? 使用键将多个对象指定为另一个 object 的值?

您可以使用扩展语法来实现这一点:

 let dataObj = {}; const personData = {name:"sai",age:"20"} const ids = {id1:"1231455",id2:"425325232"} dataObj = {...dataObj, personData, ids }; console.log(dataObj); /* output: value of dataObj: { personData: { name: "sai", age" "20" }, ids: { id1: "1231455", id2: "425325232" } } */

我将尝试使用上面的示例来解释传播。 首先我们从一个空的 object dataObj : {}开始。 我们想向 object添加新属性: personDatapersonData object 作为值, idsids object 作为值。

ES2015 添加了用于在对象中设置属性定义的简写语法。 这就是这里使用的:

dataObj = { personData, ids };

这只是一种更简洁的写作方式

dataObj = {
  personData: personData,
  ids: ids
};

更多信息可以在MDN上找到。

因为你想在之前初始化你的object,我们不能简单地覆盖object,但是我们需要在现有的object中添加新的属性。 这可以使用扩展语法来完成。

const oldObject = { key: 'value', anotherKey: 'another value' };
let newObject = { ...oldObject };
// newObject value: { key: 'value', anotherKey: 'another value' };

oldObjectnewObject中“传播”。 导致它具有与oldObject相同的键值对。 在您的代码示例中,我们将的 object 分配给dataObj 在那个新的 object 中,我们传播了当前dataObj中的所有属性: {...dataObj然后添加新属性: , personData, ids }

我希望这个解释很清楚,请随时询问更多信息。 扩展语法非常强大,可以用于很多事情。 因此,请务必阅读。

您可以合并两个对象,如下所示。 您可以使用“...”传播 object。 传播 object 也适用于对象。 克隆 object,如下面的代码所示。 欲了解更多信息,请访问https://flaviocopes.com/javascript-spread-operator/


  
  
let dataObj = {}
    const personData = { name: "sai", age: "20" }
    const ids = { id1: "1231455", id2: "425325232" }
    dataObj = { ...dataObj, personData, ids }
    console.log(dataObj);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM