繁体   English   中英

有没有办法在对象解构中使用数组内容

[英]Is there any way to use array contents in object destructuring

我有一个数组包含我想要解构它的元素并将它们用作对象解构。

我有这个代码,我从req.body中解构密钥。

 const {
        city,
        companyName,
        contactName,
        contactTitle,
        country,
        email,
        fax,
        password,
        phone,
        role,
    } = req.body;

我想为所有数据使用数组,例如。

 const temp = [
        city,
        companyName,
        contactName,
        contactTitle,
        country,
        email,
        fax,
        password,
        phone,
        role,
       ];

并使用此数组作为对象解构中的键根据我:

const { [... temp ]} = req.body;

我知道这是错的,但有些东西我可以使用这个数组并从req.body中解构出那些元素。

正如Rajesh在评论中提到的,你不能这样做。

对象解构是一些糖语法,可以帮助您在大多数用例中编写更清晰的代码。 在您的情况下,由于您需要某些特定的东西(重新使用属性名称列表),您可以创建自己的函数来模仿您想要的行为:

function extractVars(from) {
    const myVarList = [
        'city',
        'companyName',
        'contactName',
        'contactTitle',
        'country',
        'email',
        'fax',
        'password',
        'phone',
        'role'
    ];

    const vars = {};

    for (let v of myVarList) {
        vars[v] = from[v];
    }

    return vars;
}

const vv = extractVars(req.body);

假设req.body是一个包含所有键/值的对象,并且您只想要temp数组中的值,请尝试:

const temp = Object.values(req.body)

如果您还希望在包含函数的作用域中将键作为变量公开,则最好创建一个临时对象来存储它们,例如:

let tempObj = {}
Object.keys(req.body).forEach(key => { tempObj[key] = req.body[key] })

然后tempObj将包含键/值e,g。 tempObj.citytempObj.companyName

希望这可以帮助!

暂无
暂无

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

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