繁体   English   中英

JavaScript对象-查找一个属性->更改为true,将其他所有属性更改为false

[英]JavaScript Object - Find one property -> change to true and change all others to false

有什么办法可以缩短这段代码和逻辑? 该代码目前很长。 也许我可以用map,hash或其他方式做什么?

如您所见,我有一个具有7个属性的对象。 我想要一种简单的方法来将一个target属性更改为true而将所有其他6个属性更改为false

 var object = {
        a: false,
        b: false,
        c: false,
        d: false,
        e: false,
        f: false,
        g: false
    }

    target = "b";

    switch(target) {
        case a:
            object.a = true;
            object.b = false;
            object.c = false;
            object.d = false;
            object.e = false;
            object.f = false;
            object.g = false;
            break;
        case b:
            object.a = false;
            object.b = true;
            object.c = false;
            object.d = false;
            object.e = false;
            object.f = false;
            object.g = false;
            break;
        case c:
            object.a = false;
            object.b = false;
            object.c = true;
            object.d = false;
            object.e = false;
            object.f = false;
            object.g = false;
            break
        case d:
            object.a = false;
            object.b = false;
            object.c = false;
            object.d = true;
            object.e = false;
            object.f = false;
            object.g = false;
            break;
        case e:
            object.a = false;
            object.b = false;
            object.c = false;
            object.d = false;
            object.e = true;
            object.f = false;
            object.g = false;
            break
        case f:
            object.a = false;
            object.b = false;
            object.c = false;
            object.d = false;
            object.e = false;
            object.f = true;
            object.g = false;
            break;
        case g:
            object.a = false;
            object.b = false;
            object.c = false;
            object.c = false;
            object.d = false;
            object.e = false;
            object.f = false;
            object.g = true;
            break;
    }

如何将target给定的属性设置为true ,同时将其他6个属性设置为false

一个简单的按键循环,如果匹配则将每个按键设置为false / true

 var myObject = { a: false, b: false, c: false } function updateState (active) { Object.keys(myObject).forEach( function (key) { myObject[key] = key === active }) } /* const updateState = active => Object.keys(myObject).forEach( key => myObject[key] = key === active ) */ console.log(JSON.stringify(myObject)) updateState('b') console.log(JSON.stringify(myObject)) updateState('c') console.log(JSON.stringify(myObject)) 

我有点困惑。 您的对象的所有属性都已设置为false。 是否假定此对象将不会始终将所有属性设置为false? 如果是这样,这将是我的方法。

var object = {
    a: false,
    b: false,
    c: false,
    d: false,
    e: false,
    f: false,
    g: false
}

target = "b";

object = _.mapValues(object, () => false);

object[target] = true;

只需将所有值设置为false,然后将您想要的值设置为true:

 var object = { a: false, b: false, c: false, d: false, e: false, f: false, g: false } target = "b"; for (var prop in object) { object[prop] = false; } object[target] = true; 

var object = {
    a: false,
    b: false,
    c: false,
    d: false,
    e: false,
    f: false,
    g: false
}
target = "b";
Object.keys(object).forEach(key => {
  object[key] = false
})
object[target] = true

暂无
暂无

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

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