使用对象属性在for循环中声明变量

时间:2016-09-01 21:45:29

标签: javascript variables object for-loop iteration

我正在尝试使用对象的属性找到一种更短的方法来解除变量。

我有一个" userOptions"对象作为参数传入,如下所示:

var example = new myFunction({
    maxLimit: 30,
});

在myFunction中,我有另一个名为" defaultOptions"我将其与userOptions进行比较,以将选项声明为变量。以下示例可能已经足够短。但是,当选项数量增加时,它开始变得低效。

function myFunction(userOptions) {
    var defaultOptions = {
        maxLimit: 20,
        minLimit: 10
    }

    // Apply user options
    for (var i in defaultOptions) {
        if (userOptions.hasOwnProperty(i)) {
            defaultOptions[i] = userOptions[i];
        }
    }

    // Declare variables
    var maxLimit = defaultOptions.maxLimit;
    var minLimit = defaultOptions.minLimit;
}

This question有点类似于我想做的事情。但是,答案建议逐个访问对象属性,就像我已经做过的那样。

有没有更好的方法来完成这项任务?就像在for循环中声明变量或将更新的选项对象的属性提取为变量一样?

1 个答案:

答案 0 :(得分:1)

好像你正在寻找Object.assign,右边的参数会覆盖左边对象的重叠属性:

console.log(Object.assign({ id: 1, name: 'Hello' }, { name: 'World' }));

可以使用:

var config = Object.assign(defaultOptions, userSuppliedOptions);

如果您只是想要常规变量并且可以访问ES6,那么您也可以使用destructuring assignment来使事情更简洁:

let { minLimit, maxLimit } = defaultOptions;