4

我有一个对象,它被传递给这样的函数:

function(config['options'])

这里有某些值,例如config['options']['property1']设置为 1,我想在将它们传递给此函数之前将其更改为true(例如 0 到)。false

我该怎么做,我似乎无法使用.each()

4

3 回答 3

8

options是一个对象,所以使用 for-in 循环来迭代属性:

for (var key in config.options) {
    var current = config.options[key];

    if (current === 1) {
        config.options[key] = true;
    }

    if (current === 0) {
        config.options[key] = false;
    }
}
于 2013-05-31T12:20:40.320 回答
1

您可以使用double negation将值转换为布尔值。!!1成为true!!0成为false

于 2013-05-31T12:29:49.267 回答
0

这个适用于双重否定:

var obj = {
    prop1: 1,
    prop2: '1',
    prop3: 0,
    prop4: '0',
    prop5: true,
    prop6: false,
    prop7: 'test'
}, prop, val;

for(prop in obj) {
    val = Number(obj[prop]);

    !isNaN(val) && (obj[prop] = !!val);
}

结果(JSON字符串化):

{
    "prop1": true,
    "prop2": true,
    "prop3": false,
    "prop4": false,
    "prop5": true,
    "prop6": false,
    "prop7": "test"
}
于 2013-05-31T12:44:16.853 回答