有什么方法可以在对象分解中使用数组内容

时间:2019-05-22 09:50:34

标签: javascript

我有一个数组,其中包含一些要分解的元素,并将其用作对象分解。

我有这段代码,其中我正在从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中解构该元素的方法。

2 个答案:

答案 0 :(得分:0)

正如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);

答案 1 :(得分:0)

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

const temp = Object.values(req.body)

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

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

tempObj将包含键/值,例如tempObj.citytempObj.companyName

希望这会有所帮助!